内存对齐
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 下面是内存对齐的一个例子