我在CppCheck中发现了一个错误吗?为什么我在这里得到"空指针取消引用"错误?

use*_*748 10 c++ pointers static-code-analysis cppcheck

我正在使用Cppcheck来管理我的代码.我有以下功能:

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

令我惊讶的是,我在第3行得到了Null指针取消引用.

我完全感到困惑:我的功能中没有指针.为什么我会收到此错误?

我试过调查一下:

  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
    }
    
    Run Code Online (Sandbox Code Playgroud)

我还可以做些什么?是Cppcheck中的错误吗?比较功能本身有问题吗?如果是这种情况我会感到惊讶,因为cppcheck不会抱怨我的项目中使用的任何其他std函数.

注意:我不要求对可能的空指针引用错误,所以这不是任何的下列问题重复:1,23.

Dan*_*äki 5

我是Cppcheck开发人员.

它看起来像是Cppcheck中的一个错误.但是,我无法重现这种误报.如果您不使用最新的Cppcheck,请更新.否则请在cppcheck bug跟踪器中报告:http://trac.cppcheck.net