結構體在內存中如何存儲?
遵循結構體對齊規則:
1.首先要知道默認對齊數:VS 中 8 Linux 中4
2.第一個成員放到0偏移處
3.後面所有的成員都放到對齊數(本身和默認對齊數的較小值)的倍數處偏移
4.結構體總大小爲所有對齊數中最大對齊數的倍數
Eg:
運行結果爲 24
圖中可以看出內存有浪費,而我們將小的成員放一起可以節省資源 減少浪費。
上例可以改爲:
int i;
char c;
double d;
這樣總大小隻需16 節省浪費。
空的結構體類型大小爲1,創建對象需要開闢空間,開多了浪費,不開沒法尋址,而內存的最小單位是一個字節,所以開1個.
那麼結構體爲什麼要對齊呢?
如圖 紅色方式讀取b時需要讀取兩次
綠色方式只需讀取一次
用內存來換取時間。