Structure Byte Padding byte alignment padding byte n
Structure Byte Padding 구조체의 멤버들이 byte alignment 을 해야 하는 관계로 멤버들 사이에 임의의 공간이 생 기는 현상(padding byte). n 구조체의 경우 멤버 중 가장 큰 데이터 타입 의 배수값으로 크기가 결정 n alignment of starting address of a struct depends on the compiler and the platform n
지역변수의 byte alignment int main() { int i=0; char c=0; int main() { char c=0; int i=0; printf("char c : : %p %dn", &c, &c); printf("int i : : %p %dn", &i, &i); return 0; } char c : : 0022 FF 73 2293619 int i : : 0022 FF 74 2293620 char c : : 0022 FF 77 2293623 int i : : 0022 FF 70 2293616 변수의 위치가 달라져도 ( 정렬 순서 ) 바이트 alignment 는 지켜짐
구조체의 padding 과 크기 struct Message { char Data 1; short Data 2; int Data 3; char Data 4; }; int main() { printf("%d n", sizeof(struct Message)); return 0; } n 결과 : 12 ( 예상 - 8 ) struct Mixed. Data /* after compilation */ { char Data 1; char Padding 0[1]; // short 는 2의 배수 short Data 2; int Data 3; char Data 4; char Padding 1[3]; // }; Int 형이 가장 큰 데이터 형 Int 배수 형태가 크기(12)로 결정
- Slides: 7