我想知道我是否将矢量中的动态分配对象替换为另一个,该对象是否被删除或我是否必须自己完成?
vector<thingamajig*> myvec;
...
myvec[17] = new thingamajig(paramsA);
...
myvec[17] = new thingamajig(paramsB); //what happens to the previous thingamajig?
这是内存泄漏吗?我不太了解向量,知道它是否会自动删除thingamajig(paramsA)。如果不是清理旧旧的正确方法是什么?
答案 0 :(得分:1)
之前的事情发生了什么
您丢失了指向上一个myvec[17]
的指针,从而导致内存泄漏。
您最好在std::vector
#include <memory>
#include <vector>
std::vector<std::unique_ptr<thingamajig>> myvec;
myvec[17].reset(new thingamajig(paramsB));