2013-08-05 22 views
2

我有一個很簡單的代碼如下:Qt的讀取在存取權限違規:爲0x0,標誌=爲0x0(第一次機會)

Letter* Vakje::geefLetter() const 
{ 
    return m_letter; 
} 

類Vakje獲取與一個NULL指針爲m_letter初始化,但我仍然遇到讀訪問違規錯誤,請問有人可以幫忙嗎?

這是調用函數的代碼:

bool Spelbord::positionIsEmpty(int rij, int kolom) { 
    if (vakjes[rij][kolom]->geefLetter()==nullptr) return true; 
    else return false; 
} 
+6

究竟還有什麼你期待什麼呢?訪問「NULL」的指針是未定義的行爲,大多數情況意味着「程序崩潰」[對於UB總是不這樣,但在這種情況下,很典型]。 –

+0

但我正在檢查它是否爲NULL:S –

+3

我看不到檢查。我們是否應該猜測某處的某些代碼是否有空檢查?我們還應該猜測什麼? –

回答

2

如果vakjes[rij][kolom]NULL,然後試圖取消引用該指針->結果不確定的行爲(通常是:崩潰)。

只要改變代碼:

bool Spelbord::positionIsEmpty(int rij, int kolom) { 
    if (vakjes[rij][kolom] == nullptr) return true; 
    if (vakjes[rij][kolom]->geefLetter()==nullptr) return true; 

    return false; 
} 
相關問題