一、什么是内存对齐原则
内存对齐原则指的是,保证各个存储空间的对齐。其目的是为了方便操作系统更加快捷的访问各个存储空间,也就是保证每次访问的偏移量都尽可能规律。
二、结构体strcut的内存对齐原则
对于C语言的struct而言,如果想计算sizeof(struct)的大小,首先要分为单结构体和嵌套结构体两种情况:
2.1 单结构体计算大小
计算单结构体的长度大小,需要按照以下规则:
规则1 | 找到当前结构体中,存储空间最大的单元,所有空间都按照这个最大单元的大小存储。注意:上一句话所说的是空间而不是 |
规则2 | 所有单位按照顺序进行存储,如果多个单位可以合并为一个空间,则合并存储 |
上述规则文字描述晦涩难懂,我在下边花了几张图举几个例子方便理解:
2.2 嵌套结构体计算大小
如果结构体A中包含一个结构体B,这结构称为嵌套结构体。最大存储单元按照B中的最大存储单元来算。