首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问在析构函数中释放内存的有关问题

2012-02-15 
请教在析构函数中释放内存的问题.写了个求二维数组(行列相同)非对角线元素之和的程序,在析构函数中释放内

请教在析构函数中释放内存的问题.
写了个求二维数组(行列相同)非对角线元素之和的程序,在析构函数中释放内存却使程序运行出错,(程序中有注释)编译时可通过的.不知为什么?请教高手!
程序如下:

#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被重新赋值了

热点排行