内存对齐规则

对齐规则:

  1. 从内存偏移0开始存储
  2. 变量的起始位置是变量大小的整数倍
  3. 结构体总大小是最大元素的整数倍
  4. 如果有pragma pack(n),取n 和变量大小中小的那个
#include 
using namespace std;
struct st1 
{
     char a ;
     int  b ;
     short c ;
 };
 struct st2
 {
     short c ;
     char  a ;
 };
int main()
 {
     cout<<"sizeof(st1) is "<

输出为:

12
8

好处

  • 平台(移植原因):不是所有平台都能访问任意地址的,有的只能访问特定的地址,不然会抛出异常
  • 性能原因: 经过内存对齐之后, cpu 的速度大大提升.因为cpu 是整块整块读取内存的,对齐内存之后,不用对内存块进行剪接拼接就能得到数据.

你可能感兴趣的:(内存对齐规则)