c 類成員函式記憶體分配問題

2021-06-22 08:32:53 字數 646 閱讀 8938

靜態成員函式和靜態成員變數不屬於某個具體的物件,屬於類; 

也就是說在類載入(即程式初始化,類還沒有產生任何乙個具體物件)的時候就已經為靜態成員函式在記憶體分配了**區空間; 

乙個類所有的物件呼叫的成員函式都是同乙個**段的; 

當程式構造乙個類的物件(第一次構造物件)時,就會給成員函式(非靜態成員函式)分配**區空間,之後構造的物件只給非靜態的成員變數分配空間,都不給成員函式分配**區空間;當物件析構時也不釋放**區的空間(除非這個類的所有物件都析構了,才釋放這個這個類的非靜態成員函式的**區空間)。

對上述說法的更正:

1、所有函式**都在程式編譯連線時放在一塊,稱為**區,無論是靜態還是非靜態函式都一樣,不存在 "構造乙個類的物件(第一次構造物件)時,就會給成員函式(非靜態成員函式)分配**區空間 ",而是程式載入時,所有的**已在記憶體空間存在.   只有函式中用到的區域性變數才是函式呼叫時分配空間.

2、靜態成員函式和成員函式之間根本的區別是:靜態成員函式實際上是乙個全域性函式,不依賴乙個類的物件.函式定義時之所以把靜態成員函式定義在類中,是一種弱邏輯.     普通成員函式依賴乙個類的物件,也就是它有this指標,必須指向乙個類的物件.

3、建立類的物件時只是給成員變數分配空間,析構時也只**這些空間,**段裡的函式以及靜態函式和變數都是在程式結束後**。

C 類物件成員變數與成員函式記憶體分配問題

了解c 類位址的存放和分配等問題,能幫助我們更深入 更清晰了解類的組成及其使用。自己目前不是很清楚,先收集一些網上資料,而後再慢慢補充增加的了解.網路收集之 關於結構體和c 類的記憶體位址問題 今天終於有時間寫點東西了 太爽了 很多人都知道c 類是由結構體發展得來的,所以他們的成員變數 c語言的結構...

C 類物件成員變數與成員函式記憶體分配問題

很多人都知道c 類是由結構體發展得來的,所以他們的成員變數 c語言的結構體只有成員變數 的記憶體分配機制是一樣的。下面我們以類來說明問題,如果類的問題通了,結構體也也就沒問題啦。類分為成員變數和成員函式,我們先來討論成員變數。乙個類物件的位址就是類所包含的這一片記憶體空間的首位址,這個首位址也就對應...

C 類物件成員變數與成員函式記憶體分配問題

很多人都知道c 類是由結構體發展得來的,所以他們的成員變數 c語言的結構體只有成員變數 的記憶體分配機制是一樣的。下面我們以類來說明問題,如果類的問題通了,結構體也也就沒問題啦。類分為成員變數和成員函式,我們先來討論成員變數。乙個類物件的位址就是類所包含的這一片記憶體空間的首位址,這個首位址也就對應...