日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

结构体内存对齐原则

發布時間:2023/12/20 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构体内存对齐原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先來說一下結構體內存對齊原則:

1、第一個成員在與結構體偏移量為0的地址處。

2、其他成員變量要對齊到某個數字(對齊數)的整數倍的地址處。
注意:對齊數 = 編譯器默認的一個對齊數 與 該成員大小的較小值。
VS中默認的對齊數為8

3、結構體總大小為:最大對齊數(所有變量類型最大者與默認對齊參數取最小)的整數倍。

4、如果嵌套了結構體的情況,嵌套的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是所有最大對齊數(含嵌套結構體的對齊數)的整數倍。
接下來用代碼實際演示一次:

計算類A1時,大小并不是4+1=5字節,是因為變量a占據了4個字節,變量b占據一個字節,此時為5個字節,但是要遵循對齊原則中的第三條:

結構體總大小為:最大對齊數(所有變量類型最大者與默認對齊參數取最小)的整數倍。

默認對齊數為8,所有變量類型最大者是int型為4,4的整數倍為8,所以類A1的字節大小為8。

計算類A2時,char類型變量b的大小為1,占據在結構體偏移量為0的地址處,重點在于int a變量,它并不是在char類型后直接就占據了地址,int a變量在開辟空間的時候,他認為內存空間是為自己開辟的,所以存放的位置是在自己寬度的整數倍上開始的。

?如上圖所示,A2的大小為8字節,但是和A1的8字節不是一種計算方法。

計算A3時,可能會根據前面的A2計算方法計算出為8+8+4=20,但是實際結果是24,原因還是要遵循最大對齊數的整數倍,最大對齊數為double型為8字節,20不是8的整數倍,所以要向后延續到24字節。

以上內容就是結構體對齊原則,在C++的類中,如果類中有成員變量和成員函數,只需要計算成員變量即可,空類占據一個字節。?

總結

以上是生活随笔為你收集整理的结构体内存对齐原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。