C - 구조체 크기 알아보기

2022. 3. 15. 20:31C

 

#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

'C' 카테고리의 다른 글

C - 자료구조 기초2  (0) 2022.03.21
C - 자료구조 기초  (0) 2022.03.21
C - 구조체 심화  (0) 2022.03.14
C - 동적 메모리 할당  (0) 2022.03.11
C - 함수 포인터  (0) 2022.03.11