0 前言
众所周知,C语言中结构体成员默认是自然对齐的,且结构体变量首地址是按照结构体成员中最大类型对齐的(例如结构体成员包含double类型,则结构体变量首地址按照8字节对齐)。这样一来就不得不考虑到一个问题,即数组元素是紧密分布的,这样一来如何保证结构体数组中的结构体元素首地址对齐也符合规则呢?本文以实例分析结构体数组在内存中的分布。
1 C语言结构体数组在内存中的分布
1.1 结构体类型占用大小
有如下的结构体类型:
通常的想法认为它占用字节数应该为9个字节,实际上这个结构体类型占用大小为16字节:
之所以会占用16字节内存,就是考虑到了结构体被运用于数组里的情况,整个结构体的大小按照最大结构体成员类型进行对齐。
1.2 结构体数组在内存中的分布
同样以上面的结