目的:保证cpu对结构体数据的存取效率;
执行:在编译器层面;
规则:成员的起始位置、结构的大小、数组中的结构等做出的约束;
参量(对齐因子):缺省按照结构体内的最大尺寸单元对齐;可以指定pack.
表现:
结构体的内存对齐形式上像一个报文;
最大尺寸的的成员变量占据报文的一行;
小尺寸的成员变量通过共用一行和填充等技术;
在整体上保证报文的完整性。
结论:
1、对象内存模型的数据分布不连续;
2、具体位置和编译器、编译指令、cpu等有关。
数据结构内存对齐进化史:
1、不对齐:所有元素在内存中紧密排列
优点:节省内存
缺点:影响cpu访问速度;
2、全部对齐:所有元素的起始位置都在字长或对齐因子整数倍的位置:
优点:存取快;
缺点:内存浪费;
3、合并对齐:将尺寸小的元算按照原则合并;
元素起始位置的计算流程;