bit field 구조체 관련 문제
글쓴이: high385 / 작성시간: 수, 2014/06/18 - 3:38오후
typedef struct {
unsigned short visible:1;
unsigned char visible2:1;
} ELEMENT_DATA1;
와 같이 선언 후
ELEMENT_DATA1 pattern1;
printf("크기=%d\n",sizeof(pattern1));
==> pattern1 크기로서 4가 나오는 상황입니다.
저는 3바이트가 나와야 된다고 생각했는데 이유를 모르겠네요.
아시는 분 알려주세요~
Forums:
기본으로는 padding이 들어가서 visible2
기본으로는 padding이 들어가서 visible2 뒤에 1 바이트가 추가로 붙어서 강제로 4 바이트를 맞춰서 그렇습니다.
padding 이 들어가는 경우는 어느 경우이죠?
궁금합니다.
?
32비트 타겟으로 빌드하면 4byte alignment 를 위해 구조체 역시 예외가 아니어서 패딩을 넣게 됩니다.
http://blog.naver.com/brosvaby/175186543 가령 이러한 것을 읽어보시면 아실 수 있습니다.
Visual Studio 의 경우 #pragma pack(n) 이라는 것이 있어서 패딩 단위를 조절할 수도 있으나 특별한 경우가 아니면 권장하지 않습니다.
댓글 달기