不使用new在堆上创建对象

发布于 2024-10-20 00:38:03 字数 270 浏览 4 评论 0原文

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

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

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

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

此处创建的对象驻留在哪里?

In C++, is it possible to create an object on the heap without using new or malloc ?

I think if I use an STL container like a vector it will be put on the heap. If I do:

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

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

Where do the Objects created here reside?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

娇纵 2024-10-27 00:38:03

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

向量内的分配器对象可能会使用 newmalloc 来实现,尽管它也可能使用其他低级 API。例如,Unix 和 Windows 都提供内存映射 API,这些 API 又可用于实现 malloc、new 和分配器。

The object denoted by x resides on the stack. vector::push_back will copy it to the heap.

The allocator object inside the vector will probably be implemented using new or malloc, although it is possible that it uses another, low-level API. For instance, both Unix and Windows offer memory mapping APIs, which in turn may be used to implement malloc, new and allocators.

终难愈 2024-10-27 00:38:03

std::vector 正在那里做 new

std::vector is doing new there.

单挑你×的.吻 2024-10-27 00:38:03

来自 C#/java ?

std::vector<对象> listObjs; 在栈上创建一个容器,管理一个 Object 数组在堆上分配

listObjs.push_back(Object()); 分配一个大小 + 1 的数组,复制旧数组到新的并将 Object() 分配给最后一个

Coming from C#/java ?

std::vector<Object> listObjs; create a container on the stack that manage an array of Object allocate on the heap

listObjs.push_back(Object()); allocate an array of size + 1, copy the old array to the new one and assign Object() to the last one

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文