首页 > delete指针错误

delete指针错误

情况如下:

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 == 0y == 0 的时候 m 没有初始化,析构函数就会去 delete 一个未初始化的内存。

建议翻翻 C++ Primer,不光是这个问题,构造函数写法和其他基本的用法还得多补补课。

【热门文章】
【热门文章】