在 C++ 中,是否可以在不使用 new
或 malloc
的情况下在堆上创建对象?
我认为如果我使用像 vector
这样的 STL 容器,它将被放在堆上。如果我这样做:
vector<Object> listObjs = vector<Object>();
Object x = Object(...);
...
listObjs.push_back(x);
此处创建的对象位于何处?
最佳答案
x
表示的对象驻留在堆栈中。 vector::push_back
会将其复制到堆中。
allocator vector
中的对象可能会使用 new
或 malloc
来实现,尽管它可能使用另一个低级 API。例如,Unix 和 Windows 都提供内存映射 API,这些 API 又可用于实现 malloc
、new
和分配器。
关于c++ - 在没有new的情况下在堆上创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172854/