我的方法之一中包含以下代码:

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将被自动销毁。但不是ab。您需要明确销毁的那些。

另外,如果您使用的是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/

10-12 17:13