[C/C++] 구조체의 크기

위 구조체의 크기를 계산하면 어떻게 될까요? 단순히 머릿속으로 계산하면

int = 4byte

char = 1byte

short = 2byte

float = 4byte

를 모두 더해 11byte라고 생각할 수 있습니다. 하지만 직접 코딩을 해 보면 mystruct의 크기는 12byte입니다.

 

 

왜 구조체의 크기는 각각의 변수를 더한 크기가 아니라 12byte가 되는 걸까요? 그 이유는 컴퓨터의 연산 단위 때문입니다. 요즘 운영체제는 32bit, 64bit등 컴퓨터가 한번에 연산할 수 있는 크기가 나뉘어 나오는데요. 위 결과는 32bit로 컴파일 한 결과이기 때문에 32bit로 설명하자면, 32bit는 4byte이죠. 때문에 컴퓨터는 4byte씩 계산하는 것에 능숙합니다. 그래서 c와 d 사이에 1byte를 넣어서 다음 연산의 시작을 4byte 단위로 맞추는 것이죠. 이렇게 하지 않고 1bit아끼자고 빈 공간 없이 꽉꽉 채워 연산을 하게 되면, 간단한 연산은 별로 차이가 없지만 엄청나게 많은 연산을 해야 할 때는 연산 속도에서 훨씬 느려지는 결과가 나타날 것입니다.