我使用Cppcheck来管理我的代码。我有以下功能:
bool my_function(std::string my_string) const
{
return 0 == my_string.compare("Some text"); // line 3
}
令我惊讶的是,我在第3行得到了 Null指针取消引用。
我完全糊涂了:我的功能中没有指针。为什么我会收到此错误?
我试图调查一下:
我检查字符串 my_string 是否为空。
我使用"我的文字" 创建了一个对象,以确保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 函数。
答案 0 :(得分:5)
我是Cppcheck开发人员。
它看起来像是Cppcheck中的一个错误。但是,我无法重现这种误报。如果您不使用最新的Cppcheck,请更新。否则,请在cppcheck错误跟踪器中报告:http://trac.cppcheck.net