gpt4 book ai didi

c++ - 如何销毁 C++ 中的指针 vector ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:40 27 4
gpt4 key购买 nike

我的一个方法中有以下代码:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com