c++ - unique_ptr 多态性内存泄漏
问题描述
我对智能指针很陌生,我在下面的代码中遇到了问题
#include <memory>
#include <vector>
using namespace std;
class A
{
public:
int var;
};
class B : public A
{
public:
vector<unique_ptr<int>> vec;
};
int main()
{
{
unique_ptr<B> b(new B);
b->vec.push_back(unique_ptr<int>(new int(4)));
unique_ptr<A> a = unique_ptr<A>(move(b));
}
system("pause");
return 0;
}
在这个例子中,当指针 a 超出范围时,添加到向量 vec 的 4 不会被删除,但是当我更改它以便它不会强制转换为基类时,所有资源都会按预期返回,我如何管理删除定义的变量在派生类中使用多态性和unique_ptr 时?
解决方案
推荐阅读
- postgresql - Entity Framework Core PostgreSQL hstore 查询
- javascript - React.js TypeError:模块不是函数
- angular - 如何以角度保存作为字节 [] 提供的文件?
- python - 在烧瓶中打印 python 返回
- selenium-webdriver - (SessionNotCreatedException) 会话未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 83
- python - 无法理解python装饰器功能
- python - 整个函数等待而不是某些进程等待
- c++ - 为什么 `file_pointer{0}` 编译但 `file_pointer(0)` 不编译?
- python - 对字典列表中的每个字典进行排序,分别按其值 - Python
- python - 从提取的 zip 文件中记录 xls 和 xlsx 文件位置