内存对齐

1          为什么要设置内存对齐

1.1         平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。

1.2         性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。

2          设置当前程序使用的对齐方式

2.1         通过预编译宏设置对齐方式

2.1.1    #pragma pack(n)  //设置对齐方式,n可以为1,2,4,8,16

2.1.2    #pragma push    //保存当前对齐方式

2.1.3    #pragma pop     //恢复上次保存的对齐方式

3          下面是内存对齐的一个例子

内存对齐