結構體位元組對齊

2022-07-07 13:48:15 字數 428 閱讀 1128

閱讀**的時候遇到結構體位元組對齊的問題,所以寫下第一篇隨筆來記錄一下,第一次寫,格式什麼的沒有注意,姑且這樣吧。

2021-01-16  16:21:13

結構體位元組對齊的方式有這幾種:(引數n表示n位元組對齊)

#pragma pack(n)

#pragma pack(push,n)     要和 #pragma pack(pop) 成對使用

__attribute__((aligned(n))); 

也可以寫成:__attribute__ ((packed))     可以放在struct 後面或者 } 之後。

以上結果在linux 64位系統中執行並驗證。

結構體位元組對齊

include pragma pack 2 struct t.pragma pack int main int argc,char argv 最後輸出的結果為 8。這個表示是按照2位元組來對齊資料,首先分配2位元組給成員變數i,分配完成後,還剩一位元組,zj add補0 沒法容納成員變數d,此時會再...

結構體位元組對齊

include pragma pack 2 struct t.pragma pack int main int argc,char argv 最後輸出的結果為 8。這個表示是按照2位元組來對齊資料,首先分配2位元組給成員變數i,分配完成後,還剩一位元組,zj add補0 沒法容納成員變數d,此時會再...

結構體位元組對齊

在用sizeof運算子求算某結構體所佔空間時,並不是簡單地將結構體中所有元素各自佔的空間相加,這裡涉及到記憶體位元組對齊的問題。從理論上講,對於任何 變數的訪問都可以從任何位址開始訪問,但是事實上不是如此,實際上訪問特定型別的變數只能在特定的位址訪問,這就需要各個變數在空間上按一定的規則排列,而不是...