2

我想知道是否将向量中的动态分配对象替换为另一个对象,该对象会被删除还是我必须自己做?

vector<thingamajig*> myvec;

... 

myvec[17] = new thingamajig(paramsA);

...

myvec[17] = new thingamajig(paramsB); //what happens to the previous thingamajig?

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

4

1 回答 1

1

以前的事情发生了什么事amajig

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

你最好使用智能指针std::vector

#include <memory>
#include <vector>
std::vector<std::unique_ptr<thingamajig>> myvec;

myvec[17].reset(new thingamajig(paramsB));
于 2013-10-06T05:15:51.427 回答