1 #pragma pack(4) 2 struct Test1 3 { 4 char c; 5 short sh; 6 int a; 7 float f; 8 int *p; 9 char *s; 10 double d; 11 };
總共佔28Bytes。 c的偏移量爲0,佔1個Byte。sh佔2個Byte,它的對齊模數是2(2<4,取小者),存放起始地址應該是2的整數倍,所以c後填充1個空字符,sh的起始地址是2。a佔4個Byte,對齊模數是4,所以接在sh後存放便可,偏移量爲4。f佔4個字節,對齊模數是4,存放地址是4的整數倍,起始地址是8。p,s的起始地址分別是12,16。d佔8個字節,對齊模數是4(4<8),d從偏移地址爲20處存放。存放後結構體佔28個字節,是4的整數倍不用補空字符。spa