
二、内存对齐的原则
结构体变量的首地址能够被其最宽基本类型成员大小与对齐基数中的较小者所整除;
结构体每个成员相对于结构体首地址的偏移量 (offset) 都是该成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在成员之间加上填充字节 (internal padding);
结构体的总大小为结构体最宽基本类型成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在最末一个成员之后加上填充字节 (trailing padding)。
三、进行内存对齐的原因:(主要是硬件设备方面的问题)
某些硬件设备只能存取对齐数据,存取非对齐的数据可能会引发异常;
某些硬件设备不能保证在存取非对齐数据的时候的操作是原子操作;
相比于存取对齐的数据,存取非对齐的数据需要花费更多的时间;
某些处理器虽然支持非对齐数据的访问,但会引发对齐陷阱(alignment trap);
某些硬件设备只支持简单数据指令非对齐存取,不支持复杂数据指令的非对齐存取。
四、内存对齐的优点
-
便于在不同的平台之间进行移植,因为有些硬件平台不能够支持任意地址的数据访问,只能在某些地址处取某些特定的数据,否则会抛出异常; -
提高内存的访问效率,因为 CPU 在读取内存时,是一块一块的读取。

END
下期精彩继续
等你来哦!
👇👇👇



