c 언어/중급과정
구조체 정렬 크기조정하기(structure padding)
여린완자
2019. 10. 31. 10:36
#include <stdio.h>
#if(1)
#pragma pack(1)
struct PacketHeader {
char flags; // 1 BYTE
int seq; // 4 BYTE
};
#pragma pack()
#endif
#if(0)
struct PacketHeader {
char flags; // 1 BYTE
int seq; // 4 BYTE
} __attribute__((aligned(1), packed));
#endif
#if(0)
struct PacketHeader {
char flags; // 1 BYTE
int seq; // 4 BYTE
};
#endif
int main()
{
struct PacketHeader header;
printf("%d\n", sizeof(header.flags));
printf("%d\n", sizeof(header.seq));
printf("%d\n", sizeof(header));
return 0;
}
//정상적인 경우는 1+4=8바이트의 크기로 구조체크기가 결정되지만
//#pragma pack(1)를 사용함으로써 구조체 정렬 크기조정할수 있다.