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