在没有new的情况下在堆上创建对象

Ail*_*lyn 4 c++ heap memory-management stl

在C++中,是否可以在堆上创建对象而不使用newmalloc

我想如果我使用像vector它一样的STL容器,它将被放在堆上.如果我做:

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

Object x = Object(...);
...
listObjs.push_back(x);
Run Code Online (Sandbox Code Playgroud)

这里创建的对象驻留在哪里?

Fre*_*Foo 7

表示的对象x位于堆栈上.vector::push_back将它复制到堆中.

分配器内部的对象vector可能会采用以下方式实现new或者malloc,虽然这是可能的,它使用另一个,低级别的API.例如,Unix和Windows提供内存映射的API,这反过来又可以被用来实现malloc,new和分配器.