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

时间:2013-10-06 05:12:51

标签: c++ vector stl

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

vector<thingamajig*> myvec;

... 

myvec[17] = new thingamajig(paramsA);

...

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

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

1 个答案:

答案 0 :(得分:1)

  

之前的事情发生了什么

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

您最好在std::vector

中使用智能指针
#include <memory>
#include <vector>
std::vector<std::unique_ptr<thingamajig>> myvec;

myvec[17].reset(new thingamajig(paramsB));