類的位元組對齊計算

2021-09-11 02:41:53 字數 971 閱讀 2184

若char是一位元組,int是4位元組,指標型別是4位元組,**如下:

classctest

virtualvoidmem_fun(){}

private:

charm_chdata;

intm_ndata;

staticchars_chdata;

};

charctest::s_chdata=』\0』;問:

(1)若按4位元組對齊sizeof(ctest)的值是多少?

(2)若按1位元組對齊sizeof(ctest)的值是多少?

答案:12   9

答案解析:

注意點:

1 先找有沒有virtual 有的話就要建立虛函式表,+4

2 static的成員變數屬於類域,不算入物件中      +0

3 神馬成員都沒有的類,或者只有成員函式        +1(因為類函式不占用空間

在類中,如果什麼都沒有,則類占用1個位元組,一旦類中有其他的占用空間成員,則這1個位元組就不在計算之內,如乙個類只有乙個int則占用4位元組而不是5位元組。

虛函式因為存在乙個虛函式表,需要4個位元組,資料成員物件如果為指標則為4位元組,注意有位元組對齊,如果為13位元組,則進製到16位元組空間。

C 類中的位元組對齊

結果輸出如下 出人意料的,這兩行語句 cout sizeof p endl cout sizeof p.x sizeof p.y sizeof p.z endl 的輸出內容為 129 4 4 1 12 這是什麼原因?解釋這種原因的答案是 位元組對齊 乙個c 的類的物件或結構體中含有若干成員,其佔占用...

C 類中的位元組對齊

include include using namespace std class point int main include include using namespace std class point int main 結果輸出如下 出人意料的,這兩行語句 cout sizeof p end...

c語言位元組對齊的計算方式

結構體的位元組對齊,在筆試中經常考到,我們先給出結論,然後以兩道例題位元組對齊的計算方式。1 struct class的自身對齊值。對於結構體和類的自身對齊值是所有成員中最大的自身對齊值。結構體和類的對齊原則 先將資料成員對齊,再將結構體和類自身對齊,最終大小與資料成員順序相關。2 union的自身...