最近才理解结构体内存对齐的计算,之前听说过,但没把它当回事。现在掌握了,做个笔记。
推荐一个比较好的文章结构体内存对齐
我是看这篇文章搞懂的。
首先要反复反复反复读这句话3次:变量要对齐到某个数字(对齐数)的整数倍的地址处
这句话不理解没关系,下面我通过例子来说清楚
首先来分析这个
1.C是double类型(8位),存在[0,7]的位置
2.A是int类型(4位),必须存在4的整数倍的地方,也就是8,12,16都可以,所以我们这里存在8,别问我为什么不存在12,16。8都没存,存到那么后干嘛?所以就存在了[8,11]
3.B是char类型(1位),我总结了一下,最后一位的数据类型是char的话,就和他的前一位对齐,也就是int,所以char就存在[12,15].
通过上面的解释,这个就好理解了,看注释吧。