소프트웨어/C/C++

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

cs만두 2013. 8. 10. 01:29
구조체의 크기에 대하여
struct _Person{
	int age;
	char name;
	int phone;
};

갑자기 궁금해서 타이핑을 해보았다.

 

막연하게 int 4byte, char 1byte, int 4byte라서 9byte일것같지만..

sizeof(_Person)을 해보면 12가 나온다.

 

왜냐하면 구조체의경우 가장 사이즈가 큰 놈한테 맞춰서 메모리가 턱턱 할당되는데 이경우

 

 

 

 

 

 

 

 

 

 

 

 

 

퍼렁: int age

분홍: char name

녹색: int phone

 

으로 할당되서 그렇다.

 

c교제에서 옛날에 본건데 잊고있었드아

 

 

 

위에서는 int char int로 선언을 해서 12byte가 나왔다.

그러면 int char char int는?

 

 

 

 

 

 

 

 

 

 

 

 

역시나 12byte. int char int로는 중간에 3byte의 빈자리가 있어서 i c c i 를하면 3바이트로 슉~들어간다.

 

 

만약 int char int char라면?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

총 16byte가 든다.

 

 

정리: 구조체 사용시 변수 할당 순서를 효율적으로 합세