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

时间:2016-06-14 15:28:21

标签: c++ pointers static-code-analysis cppcheck

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

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

令我惊讶的是,我在第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
    }
    
  3. 我还能做什么?是Cppcheck中的错误吗? 比较功能本身有问题吗?如果是这种情况,我会感到惊讶,因为cppcheck并没有抱怨我的项目中使用的任何其他 std 函数。

    注意:我没有询问可能的Null指针取消引用错误,因此这不是以下任何问题的重复:1,{{3} }或2

1 个答案:

答案 0 :(得分:5)

我是Cppcheck开发人员。

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