我在某些代碼上運行了cppcheck以查找可能的運行時錯誤。而且它報告與下面的情況可能的空指針引用:從cppcheck更好的例子C++可能的空指針解引用
for(int i = 0; i < N; i++)
{
Foo* x(ArrayOfObjsContainingFooPtr[i].FooPtr); // line 3
if(!x) // line 4
continue;
}
錯誤消息:
[C:\ file.cpp
Foo* x = ... //defined somewhere ... Foo* y(x); //possible null pointer dereference.
編輯:3] :(錯誤)可能的空 指針解除引用:x - 否則它 冗餘以檢查x是否爲空 第4行
但我不明白這是可能的。
你可以發佈一個更完整的例子嗎?我懷疑存在導致這種情況的代碼路徑。請注意,靜態代碼分析工具並不完美,這可能是誤報。 – 2010-12-17 20:08:45
更新的原始問題 – Glaeken 2010-12-17 20:27:25
這些例子都沒有解引用x。 – 2010-12-17 22:17:48