类的析构函数是否会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内存,但运行成功,也没报错

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

Matrix::~Matrix()
{
    if(element )
    {
        delete[] element;
        element =NULL;
    }
}