【发布时间】:2021-08-22 04:47:49
【问题描述】:
如果我使用这条线
std:vector<MyObject>* vec = new std::vector<MyObject>(100);
- 如果我在堆栈中创建 MyObject 并将它们添加到向量中,它们会保留在堆栈中,对吗?
MyObject obj1; vec->push_back(obj1);
-
所以如果它进入堆栈,那么添加到向量中的 MyObject 会在方法结束后消失吗?我在向量里面会有什么比?垃圾?
-
我应该改用这个吗?:
std:vector
* vec = new std::vector (100);
如果是这样,每个 MyObject 中的对象和原语呢? 它们也应该被动态创建吗?
谢谢
【问题讨论】:
-
请注意,在堆上分配指向容器(例如向量)的指针通常是一个坏主意(因为容器本身在堆上分配其内容)。更多信息请看这里:stackoverflow.com/questions/1642903/…, stackoverflow.com/questions/21622505/smart-pointer-to-container
-
顺便说一句,欢迎来到 SO!如果您认为某个答案是已接受的,请不要忘记将答案标记为已接受,以便完成该问题。
标签: c++ heap-memory stdvector stack-memory