【问题标题】:Using delete crashes my computer使用删除使我的电脑崩溃
【发布时间】: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


【解决方案1】:

您确定没有删除指针两次吗?这样做可能会导致nasty crashes

或者,只需切换到使用成员变量,这样您就不必处理分配和解除分配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2022-12-17
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多