結構體內存對齊

2021-07-31 22:59:11 字數 525 閱讀 1786

1.說明:

第乙個成員起始於0偏移處

每個成員按其指定大小和指定對齊引數n中較小的乙個進行對齊

1.偏移位址和成員占用大小均需對齊

2.結構體成員對齊引數為其所有成員使用對齊引數的最大值

結構體總長度必須為所有對齊引數的整數倍

2.示例說明:

struct test

; //結構體大小為上面的所有對齊引數的整數倍

int main()

#pragma pack(8)     //按8個位元組大小對齊,linux下預設4位元組對齊,會直接忽略此條語句

struct s1

;//這裡的long是32位編譯器的結果,編譯器不同結果不同

struct s2

;//結構體裡面有結構體的對齊方式是取裡面的結構體對齊數的最大的

int main()

3.關於資料型別的大小

結構體內存對齊

結構體內存對齊 一 什麼是位元組對齊,為什麼要對齊?現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特 定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這...

結構體內存對齊

一 什麼是位元組對齊,為什麼要對齊?現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特 定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的...

結構體內存對齊

對齊規則 每個特定平台上的編譯器都有自己的預設 對齊係數 也叫對齊模數 程式設計師可以通過預編譯命令 pragma pack n n 1,2,4,8,16來改變這一係數,其中的n就是你要指定的 對齊係數 規則 1 資料成員對齊規則 結構 struct 的資料成員,第乙個資料成員放在offset為0的...