C
C - 구조체 크기 알아보기
해변
2022. 3. 15. 20:31
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define _CRT_SECURE_NO_WARINGS
struct PacketHeader {
char flags;
int seq;
};
int main(void) {
struct PacketHeader header;
printf("%d\n", sizeof(header.flags));
printf("%d\n", sizeof(header.seq));
printf("%d\n", sizeof(header));
printf("%d\n", sizeof(struct PacketHeader));
return 0;
}
출력 결과
1
4
8
8
먼저 header.flags는 char형이라서 1
header.seq는 int형이라서 4
header는 8인 이유가 int형 기준으로 4바이트를 2번 할당 받아서 char형 1 빈공간 3 int형 4로 8이다
이때 빈 공간을 패딩이라고 칭한다.
구조체 PacketHeader의 크기도 마찬가지로 8