2016-06-14 68 views
9

我使用Cppcheck來管理我的代碼。我有以下功能:我在CppCheck中發現了一個錯誤嗎?爲什麼我在這裏得到「空指針解除引用」錯誤?

bool my_function(std::string my_string) const 
{ 
return 0 == my_string.compare("Some text"); // line 3 
} 

令我驚訝的是,我得到的空指針在該行3

我完全糊塗了:有我在功能上沒有指針。爲什麼我會得到這個錯誤?

我試圖對其進行調查:

  1. 我檢查,如果字符串my_string是空的。

  2. 我創建使用「我的文字」確保Cppcheck不抱怨使用臨時對象的對象:

    bool my_function(std::string my_string) const 
    { 
    std::string str("Some text"); 
    return 0 == my_string.compare(str); // line 3 
    } 
    

我還能做什麼?是Cppcheck中的錯誤嗎?與函數本身相比,有沒有問題?如果發生這種情況,我會感到很驚訝,因爲cppcheck不會抱怨我的項目中使用的任何其他std函數。

注:我不要求有關可能的空指針引用錯誤,所以這不是任何的下列問題重複:123

+6

對我來說看起來像一個bug。我沒有看到代碼錯誤。 –

+1

你試過'return(0 == my_string.compare(「Some text」));'?只是可能 –

+2

只是要清楚,代碼的工作原理沒有崩潰,但它只是cppcheck報告錯誤,對吧? – Arunmu

回答

4

我是Cppcheck的開發者。

它看起來像Cppcheck中的一個bug。但是我沒有重現這種誤報。如果您不使用最新的Cppcheck,請更新。否則,請在cppcheck錯誤跟蹤器中報告:http://trac.cppcheck.net