ZHCUAQ1F july 2015 – april 2023
结构与其具有最严格对齐要求的成员所需的边界对齐。例如,如果结构的成员所需的最大对齐是 16 位对齐(例如,short),则整个结构对齐到 16 位边界。如果结构包含需要 64 位对齐的类型(例如 double 或 long long),则该结构对齐到 64 位边界。
如果结构成员本身也是结构,则必须先确定内部结构的大小和对齐方式,然后才能确定外部结构的大小和对齐方式。
除非使用了 packed 属性,否则结构成员的大小和对齐方式与它们作为独立对象的大小和对齐方式相同。结构的数组成员按与其元素类型的对齐方式对齐;这可能与元素是独立的顶级(静态)对象时的对齐方式不同。
结构的大小总是等于结构对齐方式的倍数。有时,需要在最后一个成员之后填充,以将大小四舍五入为结构对齐方式的倍数。结构的大小包括成员之间任何必要的填充。例如,如果结构的最大成员是 float 类型,则结构的大小将是 32 位的倍数。
静态作用域数组(有时称为顶级数组)在 8 字节(64 位)边界上对齐。