C++ 替换矢量中的动态对象

C++ Replace dynamic objects in vector

本文关键字:动态 对象 替换 C++      更新时间:2023-10-16

我想知道如果我用另一个向量替换一个动态分配的对象,该对象是被删除还是我必须自己做?

vector<thingamajig*> myvec;
... 
myvec[17] = new thingamajig(paramsA);
...
myvec[17] = new thingamajig(paramsB); //what happens to the previous thingamajig?

这是内存泄漏吗? 我对向量不够了解,无法知道它是否会自动删除 thingamajig(paramsA)。 如果不是,清理旧方法的正确方法是什么?

上一个东西会怎样,amajig

您丢失了指向上一个myvec[17]的指针,从而导致内存泄漏。

您最好在std::vector中使用智能指针

#include <memory>
#include <vector>
std::vector<std::unique_ptr<thingamajig>> myvec;
myvec[17].reset(new thingamajig(paramsB));