首页 > 解决方案 > 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_;
}

标签: c++memory-management

解决方案


推荐阅读