为什么需求内存对齐
为了访问未对齐的内存,处理器需要做两次内存访问;
对齐的内存访问仅需要一次访问
什么数据需要内存对齐
结构体、栈中的成员数据
怎么样叫做内存未对齐
一个字或双字操作数跨越了4个字节边界
一个四字操作字跨越了8个字节边界
内存对齐规则
- 每个成员按其类型的对齐参数(类型的字节大小)和指定对齐参数(#pragma pack(n)宏指定)中较小的一个对齐;
- 结构的长度必须是所用过的所有对齐参数的整数倍,不够补空字节;
为了访问未对齐的内存,处理器需要做两次内存访问;
对齐的内存访问仅需要一次访问
结构体、栈中的成员数据
一个字或双字操作数跨越了4个字节边界
一个四字操作字跨越了8个字节边界