淺析內(nèi)存對齊

淺析內(nèi)存對齊

ID:47919024

大小:26.00 KB

頁數(shù):2頁

時間:2019-10-30

淺析內(nèi)存對齊_第1頁
淺析內(nèi)存對齊_第2頁
資源描述:

《淺析內(nèi)存對齊》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、淺析內(nèi)存對齊WindowsXPVC6.0環(huán)境下操作,下面的內(nèi)容純屬個人見解,不對的地方,還請指正!一、結構體,下面以8個字節(jié)為標準,進行內(nèi)存對齊(以C++內(nèi)置的數(shù)據(jù)類型為基礎)。structnode{?intarray[10];?inti;?doubled1;?doubled2;?charch;};有的書上面說結構體的大小為所有數(shù)據(jù)成員字節(jié)數(shù)的總和,因為變量在內(nèi)存中分配的空間是由它的類型決定,所以也不能說完全不對,如果大小為所有數(shù)據(jù)成員字節(jié)數(shù)的總和,那么sizeof(node)的值為61,然而結

2、果卻不是這樣,它的值應該為72,這就是結構體中的數(shù)據(jù)成員變量所占內(nèi)存空間被擴充了,使內(nèi)存對齊。具體的計算方法:sizeof(node)=sizeof(array)+sizeof(i)+4+sizeof(d1)+sizeof(d2)+sizeof(ch)+7注意:1、結構體中的數(shù)組元素要當成每個數(shù)據(jù)成員變量來計算。??????????2、在結構中如果兩兩相鄰的兩個數(shù)據(jù)成員都為4個字節(jié),則不需要補到8個字節(jié)。??????????3、如果兩兩相鄰的兩個數(shù)據(jù)成員字節(jié)之和小于8,則需要補到8,,例如:??

3、??????????????structnode????????????????{?????????????????????charch;?????????????????????intj;?????????????????????inti;?????????????????????intk;??????????????????????doubled1;?????????????????????doubled2;?????????????????};?????sizeof(node)=(size

4、of(ch)+sizeof(j))+3+sizeof(i)+sizeof(k)+sizeof(d1)+sizeof(d2)=32?????如果把數(shù)據(jù)成員ch與d2的位置調(diào)換一下,結構體的大小將會變成40?????4、如果單個數(shù)據(jù)成員所占內(nèi)存大小為8個字節(jié),則不需要補齊。?????5、如果兩兩相鄰的數(shù)據(jù)成員字節(jié)之和大于8則要,分情況處理,例如:?????????????structnode?????????????{???????????????????intj;?????????????????

5、??inti;???????????????????intk;???????????????????doubled1;???????????????????doubled2;?????????????};?????k與d1相鄰,則需要把k所占的字節(jié)數(shù)要補齊到8個字節(jié)。?????二、聯(lián)合體unionUNION{?charj;?inti;?doubled;};sizeof(UNION)=8,在聯(lián)合體中,求聯(lián)合體的大小不是所有數(shù)據(jù)成員長度之和,它是以聯(lián)合中最大的數(shù)據(jù)成員為標準。?三、如果一個類中只有數(shù)

6、據(jù)成員,沒有成員函數(shù),那么求這個類的大小也可以用上面求結構體大小的方法來計算。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。