c++ - C ++如何管理动态分配对象的清理,该对象也动态分配内存
问题描述
我有一个Aclass
包含指向 struct 的指针的类GraphStructure *Graph_
。
构造函数通过动态分配实例Aclass
来初始化这个指针。GraphStructure
该GraphStructure
实例还动态分配数组并在其析构函数中对这些数组调用 delete。
调用析构函数的顺序是(1)类析构函数和(2)结构析构函数。
如果我delete
在析构函数中调用,然后调用结构Graph_
的Aclass
析构函数,当我的程序停止响应时,这里是否会发生双重释放。
如果我不打电话delete Graph_;
,那么它运行正常,但我不是在这里引入内存泄漏吗?处理这个问题的正确方法是什么?
我试图调试程序。
struct GraphStructure
{
idx_t* xadj;
idx_t* adjncy;
GraphStructure() {
xadj = new idx_t[5];
adjncy = new idx_t[5];
}
~GraphStructure() {
delete[] xadj;
delete[] adjncy;
}
};
class Aclass
{
GraphStructure *Graph_;
}
Aclass::Aclass():Graph_(new GraphStructure()) {}
Aclass::~Aclass()
{
//delete Graph_;
}
解决方案
推荐阅读
- html - 模态对话框的Ionic 3边框半径在android中不起作用
- shell - 通过java运行shell脚本时找不到转换命令
- javascript - React-native- 如果数组为空,则有条件地禁用 TouchableHighlight
- php - MySQL 夏令时信息似乎不正确。如何确保它在 Windows 中是最新的?
- react-native - createReduxBoundAddListener 在 react-navigation-redux-helpers@2.0.0 中已弃用!请改用 reduxifyNavigator
- opendaylight - 为什么 eman 项目从 opendaylight 氧气释放中删除。有什么具体的理由让它被丢弃吗?
- linux - 遍历一个目录并检查它是否存在于另一个目录中
- php - 学说查询生成器 SELECT DISTINCT 抛出错误
- android - 如何检测WiFi接入点是否刚刚在Android中失去了互联网连接
- c# - 从 DataGridView 复制到 Excel 工作表并保持工作表格式