E.3 alignof(C++(www.cppentry.com)11)
计算机系统可能限制数据在内存中的存储方式。例如,一个系统可能要求double值存储在编号为偶数的内存单元中,而另一个系统可能要求其起始地址为8个整数倍。运算符alignof将类型作为参数,并返回一个整数,指出要求的对齐方式。例如,对齐要求可能决定结构中信息的组织方式,如程序清单E.2所示。
程序清单E.2 align.cpp
|
下面是该程序在一个系统中的输出:
|
两个结构的对齐要求都是8。这意味着结构长度将是8的整数倍,这样创建结构数组时,每个元素的起始位置都是8的整数倍。在程序清单E.2中,每个结构的所有成员只占用13位,但结构要求占用的位数为8的整数倍,这意味着需要填充一些位。在每个结构中,double成员的对齐要求为8的整数倍,但在结构thing1和thing2中,成员的排列顺序不同,这导致thing2需要更多的内部填充,以便其边界处于正确的位置。

