相同的結構體成員,如果把順序調整一下,會不會影響結構體的大小?
答案是會的,這主要跟字節對齊有關。
比如這樣的結構體,前面兩個是 char 類型,后面跟上一個 int 類型。
struct A { char a; charb; intc; };
它在內存中的排序是這樣的,第一個 char 占 1 個字節,緊接著第 2 個 char 也占 1 個字節。
因為最后是個 int 類型,所以中間還要空 2 個字節。要保證 int 的偏移是 4 的整數倍。
結構體最終長度就是 8 個字節。
下面調整一下,把第 2 個 char 放到 int 的后面。
struct B { char a; int b; char c; };
第一個 char 任然占 1 個字節,由于后面是 int,中間還得空 3 個字節。
最后的 char 占 1 個字節。
由于 int 的存在,結構體的總長度必須是 4 的整數倍,所以結果就是 12。
成員的順序一旦變了,他們在內存中的排布方式就會不一樣,結果也就不同。
-
內存
+關注
關注
8文章
3019瀏覽量
74007 -
結構體
+關注
關注
1文章
130瀏覽量
10840
原文標題:結構體成員的順序會不會影響結構體的大小
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論