物件占用空間

2021-09-08 14:19:30 字數 438 閱讀 5544

1、物件分為欄位和方法,字段分為:static,non-static。方法分為static,non-static,virtual

2、static欄位,放在靜態儲存區,所有的物件共享。non-static欄位,每個物件擁有自己的乙份記憶體copy

3、static方法,non-static方法,virtual方法都放在**區,所有的物件共享。呼叫方法的時候,如何區分方法內的資料是那個物件的呢?

方法內的資料是方法繫結物件的資料,因為呼叫方法的時候,需要指定物件。對於virtual方法,還要增加乙個額外指標,用於在執行時,根據物件的真實型別繫結方法。注意:就算有多個virtual方法,也只有乙個額外指標。

4、因此,物件占用的空間大小就是:

不存在virtual方法:就是例項欄位的大小

存在virtual方法(乙個或多個)就是:例項欄位的大小+virtual方法的額外指標

計算虛繼承中物件占用的空間

請寫出sizeof的運算結果 程式1class base class derived1 public base class derived2 public virtual base sizeof base sizeof derived1 sizeof derived2 答案 1,1,4 問題分析 b...

ubuntu 空間占用問題

vmware ubuntu虛擬機器,安裝軟體時,報錯顯示記憶體空間不足,虛擬機器配置時設定的是50g,裝的東西不多,但是df lh 檢視後,剩餘空間不到1g,使用du lh 檢視 home ubuntu cache和 home ubuntu 這兩個檔案占用巨大,前者占用1.3g,後者占用29g。su...

C 中類物件的記憶體布局和占用空間

很多c 書籍中都介紹過,乙個class物件需要占用多大的記憶體空間。最權威的結論是 非靜態成員變數總合。加上編譯器為了cpu計算,作出的資料對齊處理。加上為了支援虛函式,產生的額外負擔。介紹完了理論知識後,再看看再找乙個例子看看 注 一下所有結果都是在vc6.0 開發環境中得出的結論 一 空類的si...