情况如下:
class mymatrix{
public:
mymatrix(int x,int y);
~mymatrix();
Type **m;
int x,y;
bool flag;
};
mymatrix::mymatrix(int x, int y){
if((x!=0)&&(y!=0)){
m=new Type*[y];
for(int i=0;i<y;i++){
m[i]=new Type[x];
}
this->x=x;
this->y=y;
flag=false;
}else{
flag=true;
}
}
mymatrix::~mymatrix(){
for(int i=0;i<y;i++){
delete[] m[i];
}
delete[] m;
}
在最后那个delete[]哪里,每次delete mymatrix时,总会有
未处理的异常: 0xC0000005: 读取位置 0xfeeefee2 时发生访问冲突
求大神帮忙改错
看起来是在
x == 0
或y == 0
的时候m
没有初始化,析构函数就会去delete
一个未初始化的内存。建议翻翻 C++ Primer,不光是这个问题,构造函数写法和其他基本的用法还得多补补课。