内存对齐

2018-08-24  本文已影响8人  里里角

什么叫内存对齐?

编译器将程序中的每个“数据单元”安排在适当的位置上。

内存对齐的作用

①平台原因:某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
②性能原因:为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。cpu的内存访问速度大大提升。原因:cpu访问内存是按粒度(memory access granularity)访问的。

内存对齐的规则

1、 对于结构的各个成员。第一个成员位于偏移为0的位置,以后每一个数据成员的偏移量必须是min(#pragma pack()指定的数,这个数据成员的自身长度) 的倍数。
2、 在数据成员完毕各自对齐之后,结构(或联合)本身也要进行对齐,对齐将依照#pragma pack指定的数值和结构(或联合)最大数据成员长度中。比較小的那个进行。
(#pragma pack(n) 表示设置为n字节对齐)

上一篇 下一篇

猜你喜欢

热点阅读