#pragma pack(8)
#includeusing namespace std;
class a
;class b;
class c;
class d//0
};class e//4 virtual指標 vptr =8 (系統是64位,8*8,故指標位元組數8) 8+8+8=24
};int main(int argc,char**argv)
{ b b;
a a;
c c;
d d;
e e;
cout<<"sizeof a="《在面試中有時會問到某個類或物件所佔記憶體的大小,今天先總結一下,其實這涉及到c++的記憶體布局,等以後有時間好好總結一下,今天就把想到的一些記錄一下:
1.普通的成員函式不會佔記憶體,但是普通的成員變數佔記憶體
2.static的變數和函式都不會佔記憶體。
3.virtual成員函式(包括純虛函式)會佔記憶體,因為會有乙個vptr指向virtual table的原因,所以不管有多少個virtual函式,均只佔乙個sizeof(vptr)=4
4.派生類:需要加上其基類的size
乙個結構體占用記憶體大小的問題
先來看下面的示例 struct demo int main 毫無疑問,都會說,結果為 8 這時我提出乙個問題?請問在32位和64位pc機上分別是多少,或許有些人就有些迷茫了。實際上都等於 8,這時候可能有些人更加疑惑了 實際上 int 型資料在32位 64位都只占用4位元組 下面我們再看乙個例子 s...
關於資料型別佔記憶體大小的總結
計算機中的單位 儲存單位 計算機只有兩種狀態 0和1,而儲存0和1的單位就是bit。1 byte 8 bite 1位元組 8位 1 word 2 byte 1字 2位元組 byte byte,習慣上用 b 是記憶體儲存資料的基本單位。可代表乙個字元 a z 數字 0 9 或乙個符號 等。1字母 1 ...
C 能否獲取乙個物件所佔記憶體的大小
今日,在專案重構的時候忽然想到乙個問題,乙個類哪些成員的增加,會影響乙個類所佔記憶體的大小?c 有沒有辦法知道乙個物件佔多少記憶體呢?第乙個問題 很快想到是類的非靜態的字段 屬性。第二個問題 首先想到的是sizeof 下面開始驗證,首先來驗證值型別,驗證 如下 int size sizeof int...