關(guān)于結(jié)構(gòu)體數(shù)據(jù)存儲的對齊問題
作者:
時間:2016-12-01
來源:網(wǎng)絡(luò)
收藏
在linux下的結(jié)果:
在windows下的結(jié)果:
在linux下的存儲形式,其中黑色包圍起來的才是我們的存儲空間白色的部分是保留區(qū)域,通過下面的兩幅圖就可以知道其中的一些道理,知道其中所謂的完成一樣的功能,保證存儲空間最小:
在windows下的存儲形式,其中黑色包圍起來的才是我們的存儲空間白色的部分是保留區(qū)域:
從上面的幾個圖片可以知道在C語言中的內(nèi)存分布是比較復(fù)雜的。一定要注意存儲的對齊形式,這樣才能了解其中的分布規(guī)律。當(dāng)然了上面的形式都只是在小端處理器模式下的存儲形式,對于大端也有類似的情況,只是存儲的位置不一樣,但是內(nèi)存的大小是相同的。
結(jié)構(gòu)體的定義不能是隨便的,如果考慮好對齊關(guān)系能夠節(jié)省大量的存儲空間。實(shí)現(xiàn)效率和存儲空間的折中。雖然#pragmapack(n)等能夠改變其中的對齊方式,不過建議不要隨便改動,可能得不償失。
技術(shù)專區(qū)
評論