다음 코드는; s1
경우32 비트 구조의 구조체
struct s1 {
void *a;
char b[2];
int c;
};
struct s2 {
void *a;
char b[2];
int c;
}__attribute__((packed));
12 바이트의 크기를 갖는 s2
데이터는 4 개 바이트 청크로 읽을 및 }__attribute__((packed));
단지 2 바이트 void*a;
의 크기를 줄여 10 바이트의 크기는,이 때문 있는가?
다소 혼란 스럽지만 }__attribute__((packed));
입니다. 그것은 인해 alignment, 컴파일러들이 시작 (성능) 최적의 주소를 확인하기 위해 필드 사이에 "쓰레기"숨겨진 추가합니다하는 과정이다
많은 감사
하드웨어에 따라 충돌이 발생할 수도 있습니다. –
@TomTanner도 물론. 고마워, 나는 편집했다. – unwind