結構體在記憶體中的對其原則

2021-08-21 06:50:18 字數 870 閱讀 9023

乙個結構體定義完了之後,其在記憶體中的儲存並不等於所有元素寬度之和。

基本資料型別結構體遵循

原則一:結構體中的元素是按照定義的順序乙個個放到記憶體中去的,並不緊密排布。從記憶體儲存單元的首位址(0)開始,每乙個元素都認為記憶體根據它的大小來劃分,所以每乙個元素存放的位置從自己寬度的整數倍開始。

原則二:經原則一後,計算出結構體的儲存單元是否是寬度最長元素的整數倍,若不是則補充到其整數倍。

2.指標型別結構體

指標占用儲存空間4位元組,不必在意什麼型別

3.綜合記憶體對齊例子

定義test1的兩個元素int型的d和test型的b,則系統為d分配的是0-3個位元組,為b分配的儲存位置是第8-32個位元組,

加起來一共28個字      節,不是最長基本型別double所佔寬度8的整數倍,因此要補齊到8的整數倍,即32。測試後可得sizeof(test1)的值是32。

結構體在記憶體中的對其規則

乙個結構體變數定義完之後,其在記憶體中的儲存並不等於其所包含元素的寬度之和。例一 include using namespace std struct x s1 voidmain 比如例一中的結構體變數s1定義之後,經測試,會發現sizeof s1 16,其值不等於sizeof s1.a 1 siz...

結構體在記憶體中對齊

剛剛完成乙個檔案的遷移程式,其中遇到了結構體對齊的問題,所以拿出來說說,與各位博友們分享。我的程式很簡單,就是把之前通過乙個結構體 fwrite 到檔案 a 裡的內容讀出,然後轉給另乙個結構體儲存。程式是簡單,但我擔心的是之前把結構體 fwrite 到檔案 a 的程式對齊結構體規則是怎樣的?一定要知...

結構體大小及其資料的對其原則

結構體預設的位元組對齊一般滿足三個準則 1 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除 2 結構體每個成員相對於結構體首位址的偏移量 offset 都是成員自身大小的整數倍,如有需要編譯器會在成員之間加上填充位元組 internal adding 3 結構體的總大小為結構體最寬基本型別成...