【发布时间】:2013-09-30 18:17:28
【问题描述】:
当我在我的类的析构函数中放入delete时,当我退出程序时系统崩溃。
例如我使用 wxWidgets 单选按钮:
wxRadioButton *rb1;
我在类的构造函数中这样初始化它:
rb1 = new wxRadioButton(this, ID_RADIOBUTTON_1, _T("&Bied"), wxPoint(310,40), wxSize(110,20),wxRB_GROUP);
然后我在该类的析构函数中删除:
if (rb1) delete rb1;
但它每次都崩溃,我必须将它放在评论中,这样它就不会崩溃,(但我知道这不是处理它的正确方法)。
【问题讨论】:
-
if根本没有帮助。 -
会不会是你在复制你的类的实例,而你没有写一个拷贝构造函数和赋值运算符?
-
让我猜猜……你还没有为你的类定义复制构造函数和/或赋值运算符。请阅读this。
-
如果你只是想让它由构造函数创建并由析构函数销毁,为什么要搞乱
new呢?让它成为会员即可。 -
读到这里,你不应该在 wxWidgets 中调用 delete:wiki.wxwidgets.org/… UI 框架倾向于这样做,确保你仔细遵循他们的指导方针。
标签: c++ crash delete-operator