如果类的析构函数不能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;
}
}