類的占用記憶體大小

2021-07-16 01:12:28 字數 750 閱讀 3083

1. 類的大小為類的非靜態成員資料的型別大小之和,也 就是說靜態成員資料不作考慮。

2. 普通成員函式與sizeof無關。

3. 靜態成員並不屬於某個物件,sizeof取的是物件大小。

4. 虛函式由於要維護在虛函式表,所以要佔據乙個指標大小,也就是4位元組。

5. 空類的sizeof為1。因為乙個空類也要例項化,所謂類的例項化就是在記憶體中分配一塊位址,每個例項在記憶體中都有獨一無二的位址。同樣空類也會被例項化,所以編譯器會給空類隱含 的新增乙個位元組,這樣空類例項化之後就有了獨一無二的位址了。所以空類的sizeof為1。

6. sizeof(類名)是在編譯時就計算了的,乙個類定義了,它所佔的記憶體編譯器就已經知道了,這時只是得到它占用的大小,並沒有分配記憶體操作 。也可以這樣想:編譯器肯定知道大小了,這與分配記憶體空間無關,知道大小了,以後例項化了才能知道要分配多大。

類是抽象的,是不占有記憶體的,可是如果類生成例項那麼將會在記憶體中分配一塊記憶體來儲存這個類。

乙個類物件的位址

就是類所包含的這一片

記憶體空間的首位址

,這個首位址也就對應具體某乙個成員變數的位址。

所有的函式都是存放在**區的,不管是全域性函式,還是成員函式

。靜態成員函式與一般成員函式的唯一區別就是沒有this指標

,因此不能訪問非靜態資料成員,靜態函式也放在**區。

sizeof訪問的程式的資料段,而函式位址則被儲存在**段內。

他有多少個父類每個父類的大小加起來在加上自身就是sizeof的大小。

Redis占用記憶體大小

redis占用記憶體大小 我們知道redis是基於記憶體的key value資料庫,因為系統的記憶體大小有限,所以我們在使用redis的時候可以配置redis能使用的最大的記憶體大小。1 通過配置檔案配置 通過在redis安裝目錄下面的redis.conf配置檔案中新增以下配置設定記憶體大小。設定r...

c 類占用記憶體大小計算

c 類所佔記憶體大小計算 說明 筆者的作業系統是32位的。class a sizeof a sizeof a 1 明明是空類,為什麼編譯器說它是1呢?空類同樣可以例項化,每個例項在記憶體中都有乙個獨一無二的位址,為了達到這個目的,編譯器往往會給乙個空類隱含的加乙個位元組,這樣空類在例項化後在記憶體得...

類記憶體大小分析

include using namespace std class test int main 這是因為空類也可以被例項化,但是例項化的物件必須要有記憶體位址,所以空類會被加入乙個位元組,用來得到例項化的記憶體位址。include using namespace std class test int...