内存对齐
内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。
存在内存对齐原因:
1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;
某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
2、性能原因:数据结构(尤其是栈)应该尽可能地在⾃然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存
问;而对齐的内存访问仅需要一次访问。
1、基本数据对齐
在X86,32位系统下基于Microsoft、Borland和GNU的编译器,有如下数据对齐规则:
在X86,32位系统下基于Microsoft、Borland和GNU的编译器,有如下数据对齐规则: