面对计算结构体大小的问题
大家可能会去计算每个成员的字节大小,再加起来得到的总数,就是结构体大小了
但是!请看,给大家放个图
与大家想的不太一样是不是,这就涉及到了一个规则
结构体对齐规则

这是第一张图中,结构体分配内存的样式,下面来讲下规则中每点的含义咯
第一点 ,第一个成员在与结构体变量偏移量为0的地址处。
第二点,其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数=编译器默认的一个对齐数与该成员大小的较小值。
vs中默认的值为8
Linux中没有默认对齐数,对齐数就是成员自身的大小
注意看 i 是直接到了4的位置,而没有在1,2,3的位置,这是因为i是int型,占4个字节,对齐数就在8和4中选择了较小值(vs),根据对齐规则,