我对一些代码运行 cppcheck 以查找可能的运行时错误。它报告了一个可能的空指针取消引用,情况如下:
Foo* x = ... //defined somewhere
...
Foo* y(x); //possible null pointer dereference.
编辑:更好的例子
for( int i = 0; i < N; i++ )
{
Foo* x( ArrayOfObjsContainingFooPtr[i].FooPtr ); // line 3
if( !x ) // line 4
continue;
}
来自 cppcheck 的错误消息:
[C:\file.cpp:3]:(错误)可能的空指针取消引用:x - 否则在第 4 行检查 x 是否为空是多余的
但我不明白这是怎么可能的。