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
应用程序中的 EXC_BAD_ACCESS 错误,Alamofire 3.1.2