我的方法之一中包含以下代码:
vector<Base*> units;
Base *a = new A();
Base *b = new B();
units.push_back(a);
units.push_back(b);
我应该在退出方法之前销毁a和b指针吗?
还是我应该以某种方式破坏指针的单位 vector ?
编辑1:
这是另一个有趣的情况:
vector<Base*> units;
A a;
B b;
units.push_back(&a);
units.push_back(&b);
那这种情况呢?现在,我不必使用delete或智能指针。
谢谢
最佳答案
如果退出该方法,units
将被自动销毁。但不是a
和b
。您需要明确销毁的那些。
另外,如果您使用的是C++ 11,则可以使用std::shared_ptr
为您完成此操作。
std::vector<std::shared_ptr<Base>> units;
而且您几乎像以前一样使用 vector ,而不必担心函数存在时的内存泄漏。我几乎说了,因为您需要使用
std::make_shared
分配到 vector 中。关于c++ - 如何破坏C++中的指针 vector ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16808303/