C++ 替换矢量中的动态对象
C++ Replace dynamic objects in vector
我想知道如果我用另一个向量替换一个动态分配的对象,该对象是被删除还是我必须自己做?
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));
相关文章:
- C++中的动态对象与非动态对象
- 创建动态对象并将其推送到矢量中
- 删除包含包含动态对象的 STL 容器的智能指针
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- C++ - 确定 const char* 是指向字符串文本对象还是动态对象
- C++ 中的动态对象
- 在正确性或良好的代码结构方面,这种动态对象创建看起来如何
- 删除动态对象的错误
- 关于删除动态对象数组
- 使用动态指针数组进行动态对象分配 - 使用什么删除?
- 如何在C++中创建动态对象列表
- C 动态对象类比较
- C++动态对象.如何在运行时确定对象大小?
- 使动态对象数组成为问题
- 动态对象指针数组C++
- 如何从操作员函数返回动态对象
- Qt创建动态对象并为同一信号分配不同的功能
- 如何在成员函数中创建动态对象
- C++ 对动态对象板进行建模
- 了解C++中的动态对象("new")