Debug Assertion Failed!
运行的时候,总有Debug Assertion Failed!
代码如下:
- C/C++ code
#include <iostream>using namespace std;class Kid{private: int m_nAge; char *m_strName; char *m_strSex;public: Kid(int age,char *name,char *sex); ~Kid(); void showKid();};Kid::Kid(int age,char *name,char *sex){ Kid::m_nAge = age; Kid::m_strName = name; Kid::m_strSex = sex;}Kid::~Kid(){ cout<<"dispose object kid"<<endl; delete []m_strName; delete []m_strSex;}void Kid::showKid(){ cout<<"姓名: "<<m_strName<<endl<<"年龄: "<<m_nAge<<endl<<"性别: "<<m_strSex<<endl;}int main(){ Kid ckid(10,"rookie_j","男"); ckid.showKid(); Kid *cptr = new Kid(10,"rookie_j","女"); cptr->showKid(); //delete cptr;这行语句去掉,依然错误. return 0;}调试程序的时候,前面都正常的,就是调试到return 0;时报错
[解决办法]
- C/C++ code
// delete []m_strName; //delete []m_strSex;注视掉。 delete和new对应
[解决办法]
当定义ckid并没有new.ckid使用结束时,会自动调用析构函数。
就是你没有new,就delete。当然会出错!
[解决办法]
那问题就应该处在你的析构函数中
Kid::~Kid()
{
cout<<"dispose object kid"<<endl;
delete []m_strName;
delete []m_strSex;
}
[解决办法]
- C/C++ code
#include <iostream>using namespace std;class Kid{private: int m_nAge; char *m_strName; char *m_strSex;public: Kid(int age,char *name,char *sex); ~Kid(); void showKid();};Kid::Kid(int age,char *name,char *sex){ Kid::m_nAge = age; Kid::m_strName = name; Kid::m_strSex = sex;}Kid::~Kid(){ cout<<"dispose object kid"<<endl; // delete []m_strName; //delete []m_strSex;}void Kid::showKid(){ cout<<"姓名: "<<m_strName<<endl<<"年龄: "<<m_nAge<<endl<<"性别: "<<m_strSex<<endl;}int main(){ Kid ckid(10,"rookie_j","男"); ckid.showKid(); Kid *cptr = new Kid(10,"rookie_j","女"); cptr->showKid(); delete cptr; return 0;}
[解决办法]
如需要阅读该回复,请登录或注册CSDN!