結構體大小和類大小的計算

2021-09-11 08:53:34 字數 808 閱讀 6491

舉例:

struct a

//該結構體中最大的型別是double,所以對齊符為8

1、首先分配8個位元組

2、int a[10]佔40個位元組

3、所以每兩個陣列元素申請8個位元組

4、直到申請5次(40個位元組)才將int a[10]全部分配完畢

5、再為b分配8個位元組(此時已經48個位元組了)

6、最後為c分配,此時為b申請的8個位元組還剩7個位元組,並不夠用,還得再分配8個位元組。

7、總共56個位元組

注意1:靜態成員不計入類大小

class b

;//該類的大小為8,c不計入類的大小

注意2:空類大小為1

class b

;//空類,大小為1

注意3:派生類繼承空類時,其大小為自身類大小,並不加上父類的1

class b

;class c : public b

;//c的大小為4,並不是5

注意4:類中用空類,要將空類按乙個位元組算

class b

;class c

;//此時c的大小為8,c中的成員b按乙個位元組算,按照對其原則,c佔8個位元組

注意:5帶虛函式的類的大小,要將虛函式指標算進去

class a

; int a;

};class b : public a

;//a大小為8,b大小為12

計算結構體大小

運算子sizeof可以計算出給定型別的大小,對於32位系統來說,sizeof char 1 sizeof int 4。基本資料型別的大小很好計算,我們來看一下如何計算構造資料型別的大小。c語言中的構造資料型別有三種 陣列 結構體和共用體。陣列是相同型別的元素的集合,只要會計算單個元素的大小,整個陣列...

計算結構體大小

include include include define uint32 unsigned int define uint16 unsigned short define uint8 unsigned char define bool unsigned char 位元組型別列舉 enum type...

結構體大小的計算

位元組對齊原則 結構體預設的位元組對齊一般滿足三個準則 1 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除 2 結構體每個成員相對於結構體首位址的偏移量 offset 都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充位元組 internal adding 3 結構體的總大小為結構體最...