查詢物件或型別的大小
在需要知道物件的實際大小時使用
語法:
sizeof(型別)
sizeof 表示式
解釋
返回 型別 的物件表示的位元組數。
返回當 表示式 求值時所返回的型別的物件表示的位元組數。
#include class a
;int main()
; sizeof(a); //值為8,位元組對齊,在char之後會填充3個位元組。
struct b
; sizeof(b); //值為8,位元組對齊,在char之後會填充3個位元組。
struct c
; sizeof(c); //值為1,空結構體也佔記憶體
聯合體是共享一段記憶體,其中最大的變數大小。
因為long long和double都是8個位元組。
其中char str[21]本來最大記憶體是21個位元組,但是是4位元組對齊,所以需要補齊後面3個位元組,所以大小是24位元組
union u
;cout <指標是用來記錄另乙個物件的位址,所以指標的記憶體大小當然就等於計算機內部位址匯流排的寬度。
在32位編譯器中,乙個指標變數的返回值必定是4。
指標變數的sizeof值與指標所指的物件沒有任何關係。
char* str="123";
cout《注意不要說類的大小,是類的物件的大小.
首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。 用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。
如果 class a; a obj; 那麼sizeof(a)==sizeof(obj) 那麼sizeof(a)的大小和成員的大小總和是什麼關係呢,很簡單,乙個物件的大小大於等於所有非靜態成員大小的總和。
空類
#include using namespace std;
class a
;class b
b(){}
~b(){}
};class c
virtual ~c(){}
virtual void fun(){}
};int main()
;cout《求繼承類的大小
#include using namespace std;
class a {};
class b {};
class c ;
class d ;
class c_1;
class e:public a{};
class f:public a,public b,public c{};
class g:public a,public b,public d{};
class h:public c,public d,public c_1{};
class h_1:public c,public c_1,public d{};
class h_2:public c,public c_1,public d,public b,public a{};
int main()
{ cout<小結類的大小
1.為類的非靜態成員資料的型別大小之和.
2.由編譯器額外加入的成員變數的大小,用來支援語言的某些特性(如:指向虛函式的指標).
3.為了優化訪問效率,進行的邊緣調整(對齊).
4 與類中的建構函式,析構函式以及其他的成員函式無關.
sizeof 類大小,空類大小
乙個類的例項化物件所佔空間的大小?注意不要說類的大小,是類的物件的大小.首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。如果 class a a obj 那麼sizeof a sizeof obj 那麼siz...
sizeof 類大小,空類大小
乙個類的例項化物件所佔空間的大小?注意不要說類的大小,是類的物件的大小.首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。如果 class a a obj 那麼sizeof a sizeof obj 那麼siz...
sizeof計算struct大小
題目 s的輸出結果 include struct s struct s next int main 答案 16 struct的sizeof不是成員型別大小的簡單相加,對齊!1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現...