程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 指針-c++對象內存分配的問題,如何確定在堆上還是在棧上?

指針-c++對象內存分配的問題,如何確定在堆上還是在棧上?

編輯:編程綜合問答
c++對象內存分配的問題,如何確定在堆上還是在棧上?

c++中對象內存放堆上還是在棧上是不是根據對象實例化的方法,如:
A a; //在棧中分配內存
A * a = new A(); //動態內存分配,在堆上

要是這樣,如果我盡量不用指針的話(這樣程序風格似乎更加清晰一些),那是不是對象都分配到棧上了?這有什麼弊端嗎?棧的空間是不是很有限?是不是為了棧空間的問題我們必須盡量多用new分配內存呢?類成員是不是也要多用指針呢?

最佳回答:


經過昨晚大家的熱心幫助,對該問題的疑問已經煙消雲散,謝謝大家!在此總結一下:
“非new的對象在棧中分配,new的對象在堆中分配” 這句話是沒有問題的。而這個
class A {
public:
A(void) :v1(10) { v1[0] = "abc"; }
vector v1;
};
只是一個類的定義,還沒有實例化,是不涉及到任何內存分配的,根本不適用於內存分配原則。就算實例化後,v1變量只是a對象的一個成員變量,它在堆上還是在棧上是由a對象的分配方式決定的,而不是由其聲明方式決定的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved