【发布时间】:2011-07-07 13:39:23
【问题描述】:
在 C++ 中,是否可以在不使用 new 或 malloc 的情况下在堆上创建对象?
我想如果我使用像vector 这样的 STL 容器,它将被放入堆中。如果我这样做:
vector<Object> listObjs = vector<Object>();
Object x = Object(...);
...
listObjs.push_back(x);
这里创建的对象驻留在哪里?
【问题讨论】:
-
malloc()不应在C++中使用。 -
可以在C++中使用malloc;你只需要小心不要期望它调用构造函数。
-
vector将其对象放在某处。除非您正在编写分配器对象或类似的东西,否则您无需担心它们的内存是在堆上、堆栈上还是在计算机的灰尘中。 -
虽然如果你的量子 CPU 写在灰尘兔子上,你可能还希望考虑屏蔽太阳辐射和野兽。
标签: c++ memory-management stl heap-memory