问题:求出32bit环境下,以下机构体所占字节数
答案:16字节
分析:
运行测试:
在分析这个问题之前,我们先记住关于结构体内存对齐的三条原则:
1_结构体变量的起始地址能够被其最宽的成员大小整除。
2_结构体每个成员相对于起始地址的偏移能够被其自身大小整除,如果不能则在前一个成员后面补充字节。
3_结构体总体大小能够被最宽的成员的大小整除,如不能则在后面补充字节。
分析这个问题我们就不考虑编译器可以指定对齐大小的情况了。在32bit环境中,一般默认的对齐大小是4字节.
Char-1字节 short-2字节 char-4字节,结构体变量首地址0x95fa140可以被最宽成员整除.符合规则1
紧接着应该是b,0x95fa141,但是是不能被short类型大小-2字节整除,于是填补空白字节,到0x95fa142.成员c 和成员 d同理, 成员e后填充变量是由于需要原则3需要被4整除,于是填充到0x95fa14c,于是是16字节