実行可能なエラーを探すために、いくつかのコードに対してcppcheckを実行しました。そして、それは次のような状況で可能なヌルポインタ参照を報告している:C++可能なnullポインタ逆参照
Foo* x = ... //defined somewhere
...
Foo* y(x); //possible null pointer dereference.
編集:より良い例cppcheckから
for(int i = 0; i < N; i++)
{
Foo* x(ArrayOfObjsContainingFooPtr[i].FooPtr); // line 3
if(!x) // line 4
continue;
}
エラーメッセージ:
[C:\ file.cpp :3]:(エラー)可能なヌル ポインタ参照:x - それ以外の場合 はxがヌルであることを確認するために冗長です 行4
しかし、これはどのように可能かわかりません。
あなたはより完全な例を投稿することができますか?私はこの状況につながるコードパスがあると思う。静的コード分析ツールは完全ではないことに注意してください。これは誤ったポジティブなものかもしれません。 –
更新された元の質問 – Glaeken
これらの例のどちらもxを逆参照しません。 –