北枫TiAmo 2021-12-12 22:21 采纳率: 100%
浏览 29
已结题

类的析构函数是否会delete类的成员函数中new的堆内存?

问题遇到的现象和发生背景

如果类的析构函数不能delete类的成员函数中new的堆内存,那return后怎么delete内存啊?

问题相关代码,请勿粘贴截图
template<typename T>
class Matrix
{
    int rol;
    int col;
    T* element;
    int size;

public:
    Matrix(int a=0, int b=0, T* c=NULL, int d=0)
    {
        rol = a;
        col = b;
        element = c;
        size = d;
    }

    Matrix operator +(const Matrix<T>& a)const
    {
        T* temp=new T[this->size];
        for (int i = 0; i < size; i++)
        {
            temp[i] = this->element[i] + a.element[i];
        }
        return Matrix(this->col, this->rol, temp, this->size);
         }
}; 
运行结果及报错内容

成员函数没有delete内存,但运行成功,也没报错

  • 写回答

1条回答 默认 最新

  • 关注

    不delete是不会报错的,但是频繁的new类的实例的时候,会导致内存的不断增长 (也就是所谓的内存泄露问题)。
    类的析构函数不会自动释放内存,需要你在析构函数中手动释放。

    Matrix::~Matrix()
    {
        if(element )
        {
            delete[] element;
            element =NULL;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月16日
  • 已采纳回答 12月13日
  • 创建了问题 12月12日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么