QT 应用程序中的 exc_bad_access 崩溃

Posted

技术标签:

【中文标题】QT 应用程序中的 exc_bad_access 崩溃【英文标题】:exc_bad_access crash in QT app 【发布时间】: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() 函数内的某个地方,这对我来说真的没有意义。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于QT 应用程序中的 exc_bad_access 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 应用程序中的 EXC_BAD_ACCESS - 内存管理问题

AppDelegate 类声明中的 EXC_BAD_ACCESS

xcode 中的 EXC_BAD_ACCESS

应用程序中的 EXC_BAD_ACCESS 错误,Alamofire 3.1.2

ARC 的 main() 中的 EXC_BAD_ACCESS 但没有提示错误

聊天应用,分配问题。 Xcode 中的自定义类初始化错误(EXC_BAD_ACCESS 代码=2)