VS2017設定結構體位元組對齊大小

2021-10-09 07:15:59 字數 471 閱讀 2063

如下面這個結構體:

typedef

struct p

ppp;

通過 sizeof 計算其記憶體,大小為多少?

答:如果是預設的設定的話,其大小應該為 24

是因為結構體存在位元組對齊的概念,為了提高訪問效率,32位的計算機,一次可以讀取4個位元組的記憶體,如果不進行位元組對齊操作,讀取乙個 int 值的資料,可能需要兩次讀取記憶體操作,大大的減小了記憶體讀取效率,這個編譯器優化的部分,當然也可以自己設定。那麼,如何設定呢?

2、通過程式中

#pragma pack(1)
上面這個**的意思是按位元組為1對齊,之後就可以按照每個成員多少位元組進行處理了。

結構體位元組對齊

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