結構體在內存中的存儲方式

結構體在內存中如何存儲?

遵循結構體對齊規則:

1.首先要知道默認對齊數:VS 中 8   Linux 4

2.第一個成員放到0偏移處

3.後面所有的成員都放到對齊數(本身和默認對齊數的較小值)的倍數處偏移

4.結構體總大小爲所有對齊數中最大對齊數的倍數

Eg

wKiom1bSvGyy789oAABss3kzBJE565.png

 

運行結果爲 24

 

 圖中可以看出內存有浪費,而我們將小的成員放一起可以節省資源 減少浪費。

上例可以改爲:

 int i

char c

double d

這樣總大小隻需16 節省浪費。

 

空的結構體類型大小爲1,創建對象需要開闢空間,開多了浪費,不開沒法尋址,而內存的最小單位是一個字節,所以開1.

 

 

 

 

 

那麼結構體爲什麼要對齊呢?

             wKiom1bSvJTDjDmLAAAew-aLvpA525.png

如圖 紅色方式讀取b時需要讀取兩次

     綠色方式只需讀取一次

     用內存來換取時間。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章