2011-10-13 214 views
0

我正在寫一個QT應用程序,我很生疏的C++,所以我猜這就是問題所在。我在我的Mac上發現了一個exc_bad_access信號,這意味着我在記憶中做錯了。這裏是我的代碼:exc_bad_access在QT應用程序崩潰

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()函數內的某處,這對我來說並沒有什麼意義。

有人可以幫我嗎?謝謝!

回答

0

原來這是更簡單的事情。我習慣於Objective-C,其中ivars自動初始化爲0.C++不會這樣做。所以,我必須確保_mainWindow在構造函數中初始化爲NULL。問題解決了。

相關問題