sizeof 該注意的一些問題

2021-05-01 07:03:27 字數 2262 閱讀 9999

1.常規

char str1 = 「hello」 ;

char str2[5] = ;

char str3[6] = ;

char   *p1 = "hello";

char *p2=;

int     n = 10;

int    *q = &n;

sizeof (str1 ) = 6    (自動加了'/0')  

strlen (str1 ) = 5    (字串的長度)  

sizeof (str2 ) = 5     (字元陣列的大小)

strlen (str2) = 未知 (該字串缺少結束符'/0')

sizeof (str3) = 6     (字元陣列的大小)

strlen (str3) = 5    (該字串的長度為5)

sizeof ( p1 ) =   4    (p1是乙個指標,大小為4)

sizeof ( p2 ) =   8    (p2是長度為2的字串陣列)

sizeof ( n ) =   4    (整型大小為4)

sizeof ( q ) =   4    (q是乙個指標,大小為4)

2.動態分配記憶體

int *p = (int *)malloc( 100 );

sizeof ( p ) = 4      (p是乙個指標,大小為4)

3.函式引數

void function1( char p,int num )

void function2( int p,int num )

4.多重繼承

class a{};

class b{};

class c:public a,public b{};

class d:virtual public a{};

class e:virtual public a,virtual public b{};

sizeof ( a ) = 1      (空類大小為1,編譯器安插乙個char給空類,用來標記它的每乙個物件)

sizeof ( b ) = 1      (空類大小為1,編譯器安插乙個char給空類,用來標記它的每乙個物件)

sizeof ( c ) = 1      (繼承或多重繼承後空類大小還是1)

sizeof ( d ) = 4      (虛繼承時編譯器為該類安插乙個指向父類的指標,指標大小為4)

sizeof ( e ) = 8      (指向父類a的指標與父類b的指標,加起來大小為8)

5.資料對齊

類(或結構)的大小必需為類中最大資料型別的整數倍.cpu訪問對齊的資料的效率是最高的,因此通常編譯浪費一些空間來使得我們的資料是對齊的

class a;

class b;

class c;

sizeof(a) = 4 (內含乙個int ,所以大小為4)

sizeof(b) = 8    (int為4,char為1,和為5,考慮到對齊,總大小為int的整數倍即8)  

sizeof(c) = 8   (同上)

6.函式與虛函式

編譯器為每個有虛函式的類都建立乙個虛函式表(其大小不計算在類中),並為這個類安插乙個指向虛函式表的指標,即每個有虛函式的類其大小至少為乙個指標的大小4

class a;

class b;

class c:public b;

class d:public b;

class e;

sizeof (a) = 4   (內含乙個int,普通函式不佔大小)

sizeof (b) = 8   (乙個int ,乙個虛函式表指標)

sizeof (c) =12   (乙個int ,乙個虛函式表指標,乙個char ,再加上資料對齊)

sizeof (d) = 8   (乙個int ,乙個虛函式表指標,多個虛函式是放在乙個表裡的,所以虛函式表指標只要乙個就行了)

sizeof (e) = 1   (static 函式不佔大小,空類大小為1)

7.父類的私有資料

雖然在子類中不可用,但是是可見的,因此私有的資料還是要佔子類的大小

class a;

class b:public a{};

sizof(b) = 4;    (內含乙個不可用的父類的int)

8.大概就這麼多了吧,想到再加吧。虛函式,多重繼承,空類是比較複雜的,大家大概記住知道就行了

weiloujushi補充:

class static_d

sizeof(static_d) ==1 //靜態資料成員不計入類內

寫XML要注意的一些問題

在xml文件中必須要有結束標記 xml標記都是大小寫敏感的 在xml中不允許不正確的巢狀包含 所有的xml文件必須有乙個根元素,有且只能有乙個根元素 屬性值必須使用引號 or 在xml文件中,空白部分不會被解析器自動刪除 這點值得注意 使用 xml,新行總是被標識為 lf 即 line feed,在...

調適的時候要注意的一些問題

調適的時候要注意的一些問題 1 連線線,如杜邦線 排針會有很大的干擾訊號影響,尤其是上m的訊號傳輸時候一定要注意訊號間的干擾。a 只要靜的下心來,什麼都能做好的 b 心若冰晶,天塌不驚,不慌不忙,一切盡在掌控之中 c 到了這個境界已經跟原理圖無關了,pcb布板布局,變得越加的重要 i.輸入輸出線不能...

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...