【问题标题】:exc_bad_access crash in QT appQT 应用程序中的 exc_bad_access 崩溃
【发布时间】:2011-10-13 01:06:57
【问题描述】:

我正在编写一个 QT 应用程序,但我对 C++ 非常生疏,所以我猜这就是问题所在。我的 Mac 上出现了 exc_bad_access 信号崩溃,这意味着我的内存有问题。这是我的代码:

void MainWindowController::showMainWindow() {
    MainWindow *w = mainWindow();
    w ->show();
}

MainWindow *MainWindowController::mainWindow() {
    if (NULL != _mainWindow)
        return _mainWindow;

    // otherwise, we need to load it and return it

    _mainWindow = new MainWindow(0);
    return _mainWindow;
}

_mainWindow 是一个实例变量,一个指针(您可能已经从函数签名中猜到了)。这是一个简单的延迟加载。我认为我正在做内存管理,因为这个类拥有该对象(稍后在析构函数中被删除)。

崩溃发生在w -> show(); 行,QT 抱怨它在 QWidget show() 函数内的某个地方,这对我来说真的没有意义。

有人可以帮帮我吗?谢谢!

【问题讨论】:

    标签: c++ qt memory-management qwidget


    【解决方案1】:

    原来它更简单。我习惯了 Objective-C,其中 ivars 会自动初始化为 0。C++ 不会这样做。所以,我必须确保 _mainWindow 在构造函数中被初始化为 NULL。问题解决了。

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多