读书人

Debug Assertion Failed!解决方案

发布时间: 2012-04-17 15:06:33 作者: rapoo

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;}
[解决办法]

读书人网 >C++

热点推荐