structMyStruct{intone;shorttwo;intthree;boolfour;}

假設(shè)在我們的平臺(tái)上,sizeof" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 行業(yè)動(dòng)態(tài) > 坑二:字節(jié)對(duì)齊

坑二:字節(jié)對(duì)齊

時(shí)間:2022-04-28 21:12:01 | 來源:行業(yè)動(dòng)態(tài)

時(shí)間:2022-04-28 21:12:01 來源:行業(yè)動(dòng)態(tài)

對(duì)于C 開發(fā)者來說,可能知道當(dāng)一個(gè)數(shù)據(jù)結(jié)構(gòu)(class or struct)中的各字段在內(nèi)存中進(jìn)行排列時(shí),會(huì)按照一個(gè)設(shè)定的裝箱長(zhǎng)度進(jìn)行字節(jié)對(duì)齊,例如:

structMyStruct{intone;shorttwo;intthree;boolfour;}

假設(shè)在我們的平臺(tái)上,sizeof(int)=4, sizeof(short)=2, sizeof(bool)=1, 如果問你sizeof(MyStruct)=?,你可能會(huì)馬上做個(gè)加法得到答案,但是答案不一定對(duì)。It depends! 假設(shè)我們是按照4個(gè)字節(jié)對(duì)齊,這上面的結(jié)構(gòu)體在內(nèi)存中實(shí)際排列如下圖:





了解這個(gè)對(duì)于我們編碼有兩個(gè)意義:

1、通過合理排列字段聲明順序來優(yōu)化存儲(chǔ)效率,內(nèi)存布局中不留空洞;

2、MarshalAsAttribute支持Layout.Explicit來進(jìn)行絕對(duì)定位,懂得了字節(jié)對(duì)齊可以配合Unmanaged側(cè)的內(nèi)存排列規(guī)則以保證字段長(zhǎng)度映射正確,不然同樣會(huì)發(fā)生字段長(zhǎng)度不一致帶來的困擾。

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉