對齊規(guī)則:
- 從內(nèi)存偏移0開始存儲
- 變量的起始位置是變量大小的整數(shù)倍
- 結(jié)構(gòu)體總大小是最大元素的整數(shù)倍
- 如果有pragma pack(n),取n 和變量大小中小的那個
#include <iostream>
using namespace std;
struct st1
{
char a ;
int b ;
short c ;
};
struct st2
{
short c ;
char a ;
};
int main()
{
cout<<"sizeof(st1) is "<<sizeof(st1)<<endl;
cout<<"sizeof(st2) is "<<sizeof(st2)<<endl;
return 0 ;
}
輸出為:
12
8
好處
- 平臺(移植原因):不是所有平臺都能訪問任意地址的,有的只能訪問特定的地址,不然會拋出異常
- 性能原因: 經(jīng)過內(nèi)存對齊之后, cpu 的速度大大提升.因為cpu 是整塊整塊讀取內(nèi)存的,對齊內(nèi)存之后,不用對內(nèi)存塊進(jìn)行剪接拼接就能得到數(shù)據(jù).