题目:
在 VS2013 下,这个结构体所占的空间大小是____字节
A. 16 B. 9 C. 12 D. 8
解:
因为 一般编译器 定义 int 为 4 字节,short 为 2字节, char 为 1字节,而且要考虑 内存分配 4 字节对齐。
int a; – 需要 4 bytes
char b; – 需要 1 byte
short c; – 需要 2 bytes
short d; – 需要 2 bytes。
分配 a 4 字节
分配 b c 4 字节 (浪费1字节 )
分配 d 4 字节 (浪费2字节 )
共用去 12 字节。
结论:
默认情况下,结构体的大小是结构体中最长类型的整数倍。
结构体中的空间分布是按照结构体中最长类型对齐的。
结构体中不同类型的成员,一定是按照自己的类型对齐。比如,int型的起始地址一定是4的整数倍,short型的首地址一定是2的整数倍