c++ - 在没有new的情况下在堆上创建一个对象

标签 c++ memory-management stl heap-memory

在 C++ 中,是否可以在不使用 newmalloc 的情况下在堆上创建对象?

我认为如果我使用像 vector 这样的 STL 容器,它将被放在堆上。如果我这样做:

vector<Object> listObjs = vector<Object>();

Object x = Object(...);
...
listObjs.push_back(x);

此处创建的对象位于何处?

最佳答案

x 表示的对象驻留在堆栈中。 vector::push_back 会将其复制到堆中。

allocator vector 中的对象可能会使用 newmalloc 来实现,尽管它可能使用另一个低级 API。例如,Unix 和 Windows 都提供内存映射 API,这些 API 又可用于实现 mallocnew 和分配器。

关于c++ - 在没有new的情况下在堆上创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172854/

相关文章:

使用OpenCV4将鱼眼图像转换为等距柱状图像的C++算法

c++ - 在单继承的情况下,C++ 是否保证 Base 子对象的地址与其 Derived 对象的地址相同?

c - 如何在 C 中实现重叠检查 memcpy

c++ - 使用 recv() 和 vector<unsigned char> 的更优雅的方式

c++ - 为什么当我用 Rcpp 编写时我不需要包含一些我应该包含在纯 C++ 中编写的库?

c++ - 旧版 OpenGL 纹理无法正常工作

linux - 检查内存页是否加载到内存中

c++ - 没有指定模板参数但仍然有效

c++ - 为什么存储在 STL 容器中的类禁止重载 operator&()?

c++ - 存在完美的转发构造函数时,按左值引用转发构造函数的目的是什么?