请教在析构函数中释放内存的问题.
写了个求二维数组(行列相同)非对角线元素之和的程序,在析构函数中释放内存却使程序运行出错,(程序中有注释)编译时可通过的.不知为什么?请教高手!
程序如下:
#include "iostream "
using namespace std;
class MATRIX
{
private:
int num;
int *ew;
double sm;
public:
MATRIX(int *sz,int n);
~MATRIX(){delete []ew;// 就是这句有问题?
cout < < "class MATRIX was delete! " < <endl;}
void sum();
void print();
};
MATRIX::MATRIX(int *sz,int n):num(n)
{
sm=0;
ew=new int[n*n];
ew=sz;
for(int i=0;i <num;i++)
for(int j=0;j <num;j++)
*(ew+i*n+j)=*(sz+i*n+j);
}
void MATRIX::sum()
{
for(int i=0;i <num;i++)
for(int j=0;j <num;j++)
{
if((i==j)||(i+j==num-1))
continue;
sm+=*(ew+i*num+j);
}
}
void MATRIX::print()
{
cout < < "The matrix : " < <endl;
for(int i=0;i <num;i++)
{
for(int j=0;j <num;j++)
cout < <*(ew+i*num+j) < < " ";
cout < <endl;
}
cout < < "Final result are: " < <sm < <endl;
}
int main()
{
int su1[][4]={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};
MATRIX *a=new MATRIX(su1[0],4);
a-> sum();
a-> print();
delete a;
return 0;
}
[解决办法]
ew=new int[n*n];
ew=sz;
--
ew被重新赋值了