1樓:匿名使用者
1、靜態
方法和靜態變數在編譯
階段分配好的,動態方法和動態變數是在專執行階段才分配記憶體的屬,就這點區別。
2、成員變數儲存在堆(資料段)內。只有函式的引數才儲存在棧裡面,因為每次呼叫函式都需要逐個數引數(進棧和出棧)
2樓:小瓦工
堆,向下分配記憶體
來(new,malloc等)
-----------------------------------
浮動棧源,向上分配記憶體(函式內部變數
bai,物件的內部成員變數等
du.一般都有生命
zhi週期)
-----------------------------------
基棧.(也叫靜態存dao儲區,包括**段,靜態變數,全域性變數,const常量等,程式一調入記憶體至少要佔這麼多空間)
c++類的資料成員是儲存在棧記憶體中還是在堆記憶體中?
3樓:匿名使用者
c++類的資料復
成員的生存週期制是根據你建立的物件而言的。物件存在資料成員才有意義。解構函式釋放的是物件的記憶體。
你普通宣告的話就在棧裡,用new就在堆裡。物件生命週期結束系統自動呼叫解構函式,不關在堆還是棧。用解構函式釋放記憶體一般都是你在建構函式裡分配了空間,解構函式釋放建構函式裡分配的空間
4樓:匿名使用者
非託管的c++的類資料成員應該是在堆記憶體中的~
5樓:匿名使用者
c++類只是一種資料型別,其資料成員的儲存方式取決於你建立例項的方式。
6樓:匿名使用者
您說的是動態資料還是區域性資料?動態資料是存放在堆區,而區域性資料是存放在棧區的!
c++的成員變數是在堆還是棧區
7樓:幻夢·人生
成員變數並不能決定自身的
儲存空間位置。決定儲存位置的物件的建立方式。
即:如果物件是函式內的非靜態區域性變數,則物件,物件的成員變數儲存在棧區。
如果物件是全域性變數,則物件,物件的成員變數儲存在靜態區。
如果物件是函式內的靜態區域性變數,則物件,物件的成員變數儲存在靜態區。
如果物件是new出來的,則物件,物件的成員變數儲存在堆區。
8樓:匿名使用者
這不是根據這個來分的,這要看你物件本身在哪兒
9樓:風吹過的街道
在main裡面,如果使用了new就是堆區,如果沒有就是棧區
10樓:匿名使用者
是在堆區是在堆區是在堆區是在堆區是在堆區
c++中,類的私有成員變數放在什麼段中,是在堆疊段中嗎?
11樓:s親友團
你說bai的應該是對
象的成員變數du
如 begar(不懂zhi程式設計的程式設計師) 所說,物件dao的成版員變數就放權在物件內
如果物件本身是堆疊(ss)裡的,那麼它的(非靜態)資料成員也在堆疊裡如果物件本身是堆裡的,那麼它的(非靜態)資料成員也在堆裡如果物件本身是ds裡的,那麼它的資料成員也在ds裡所謂public/private/protected規定的是成員的「存取」許可權
而ss/ds/heap是「儲存」方式,與前者沒有任何關係
c語言裡,哪些變數是存放在堆裡,哪些是存放在棧裡?(
12樓:匿名使用者
在c/c++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。內容
棧:就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。
堆:就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就要對應一個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動**。
自由儲存區:就是那些由malloc等分配的記憶體塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。
全域性儲存區(靜態儲存區):全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。程式結束後有系統釋放。
常量儲存區:這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改。
希望對你有幫助
13樓:匿名使用者
放在堆裡的資料時管理員自己開闢空間和釋放空間,如,new 和malloc,而放在棧裡的資料時計算機自動分配記憶體和釋放的,如變數
c++裡面,static int* a=new int(); a存放在記憶體的哪一塊?堆?棧?還是靜態變
14樓:匿名使用者
static int* a=new int();a是一個指標變數(int *型別,4個位元組,在靜態儲存區)a=new int(),動態分配了一個整數的空間,更常用的是動態分配一個陣列,比如a=new int[10],動態分配的空間位於堆區,a指標變數儲存了動態分配空間的首地址。
15樓:
首先new int()返回一個指向堆區的地址,傳給a,
而a是靜態變數區中的一個變數。
總結就是,靜態變數a是一個指標,指向堆區的一個int變數的地址,a的指向不可變,而堆區int變數的值可變。
16樓:馮英峰
廢話就不說了。簡單直接的回答你:放在靜態區(全域性區)。
滿意請採納,謝謝
17樓:匿名使用者
new出來的 肯定是堆啊
c 語言中類中的靜態資料成員為什麼必須在類體外初始化
可以通過以下幾個例子更形象的說明這個問題 test.cpp include class a int main 編譯以上 會出現 對 a a 未定義的引用 錯誤。這是因為靜態成員變數a未定義,也就是還沒有分配記憶體,顯然是不可以訪問的。再看如下例子 test.cpp include class a i...
C 中為什麼類(class)的定義最後(括號後面)還要加個分號
因為那是宣告語句,語句都要加分號。和結構一樣啊 語法 沒有為什麼 就跟c語言中struct語句一樣的,語句後面要加分號,這是c c 的規定 c 中,定義一個類的時候有些 在成員函式的後面加了一個分號,結果編譯也能通過,不加分號也是正確 加分號的是成員函式宣告,在類外部有函式實現 的。不加分號的是直接...
c中類和名稱空間是什麼?為什麼要用?什麼時候用
類是一種新的資料型別,和整型等基本型別不同,類除了定義資料之外,同時還定義了對這些資料的操作。換句話說,類是既有資料又有操作的資料型別。空間的概念主要是進行資料有效性的限定,這裡定義的,在這裡有效,要想到別的地方能夠使用,必須遵循新的規則。或者說,有了空間就有了兩條規則,對內 空間內部 規則和對外 ...