구조체 주소의 크기에 관한 질문..
날샘
구조체 주소의 크기에 관한 질문구조체 패딩에 관한 문의입니다..질문 내용 :
1 #include stdio.h
2
3 struct{
4 int a;
5 int b;
6 int c;
7 char x;
8 char y;
9 } mystery;
10
11 int main()
12 {
13 printf(mystery : %x\n, sizeof(mystery));
14 printf(int a : %x\n, sizeof(mystery.a));
15 printf(int b : %x\n, sizeof(mystery.b));
16 printf(int c : %x\n, sizeof(mystery.c));
17 printf(char x : %x\n, sizeof(mystery.x));
18 printf(char y : %x\n, sizeof(mystery.y));
19}
위와같이 구조체를 선언한 다음 구조체 주소의 크기를 출력해보면 10이 출력됩니다..
제가 배운바에 의하면 구조체의 주소를 초기화해주는 과정에서 컴파일러는 구조체의 가장 큰
데이터형을 기준으로 주소를 정렬해 주는것으로 아는데요..
위 구조체 mystery에서 가장 큰 데이터형은 int형입니다.. 따라서 4바이트를 기준으로 정렬을 하고
따라서 mystery 구조체 변수 a,b,c는 int형이므로 각 4바이트씩 공간을 할당받고 char형 변수 x, y는
4바이트의 공간에 같이 들어가고 나머지 2바이트(4바이트 - x, y)는 패딩으로 버려지고
따라서 구조체 mystery의 주소크기는 14가 출력이 되야 정상일텐데 10이 출력이 됩니다.. 궁금합니다
-
단화한
-_-... 감사합니다
-
한봄찬
%x - 확인