有代碼:可能是一個在堆上創建的對象,被視爲在C++中處於堆棧狀態?
struct FooBar
{
FooBar()
{
MyObject obj;
/// when c-tor is ended, obj must be deleted through d-tor call
}
};
...
FooBar* fooBar(new FooBar);
fooBar
是在堆上分配。但是FooBar
裏的對象MyObject obj
的構造函數不知道它在哪裏創建。那麼可以在FooBar
的上下文中處理它是否在實例化中被創建爲堆棧?
在堆上分配的對象是否有自己的堆棧?這種堆棧的大小是多少?
我是否正確地知道創建obj的堆棧和指向FooBar的指針所在的堆棧是否相同? – barankin 2011-12-19 07:31:27
最有可能的是。 (但這些都不能保證是標準的 - 堆棧和堆是實現的細節,你不應該擔心這種類型的細節。) – Mat 2011-12-19 07:33:15
只是最後一刻。所以在這種情況下,如果MyObject被分配在堆的'FooBar'內,則會分配一個大型的數組'double size [1000000]'這會產生一個關於[stack]內存不足的錯誤嗎? – barankin 2011-12-19 07:53:47