C++自定义异常出错,有大神知道这是咋回事吗?

图片说明

#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;

class MyException{
public:
MyException(char* str){
error = new char[strlen(str)+1];
strcpy(error, str);
}
void what(){
cout << error << endl;
}
public:
char* error;

~MyException(){
    if (error != NULL){
        delete[] error;
    }
}

};
void fun3(){
MyException my("aaaa");
throw my;
}
void test01(){

try{
    fun3();
}
catch (MyException e){
    e.what();
}

}
int main(void)
{
test01();
system("pause");
return 0;
}


3个回答

删除了由系统释放的指针或者 删除动态分配的指针的时候没有指向最初的地址
https://blog.csdn.net/u011068702/article/details/63702336

m0_38032942
TimGitChat 我知道了catch (MyException e)的时候调用了copy构造,但是之前的对象所指向的内存已经被释放了,释放了两次
接近 2 年之前 回复

系统释放的内存被你删了,他很空虚。

问题就出在delete这里,但是为啥错了啊?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问