0

プログラムの一部として、次のコードを使用しました。

///////////////
98:::printf("%d",abc->stv)
//////////////
100::if(abc)
//////////////

(以下のエラーが発生しました)

Possible null pointer dereference: abc - otherwise it is redundant to check if abc is null at line 100
4

2 に答える 2

3

if (abc)abcが null ポインター かどうかをテストします。

abcコンパイラは、(98 行目で逆参照することにより) がヌル ポインターではないと既に想定していることを警告しています。つまり、次のいずれかです。

  • テストが冗長であるif (abc)(真にならないため) または
  • 98 行目の逆参照は、実際には null である可能性がabcあるため、正しくない可能性があります。abc
于 2011-08-07T19:26:28.840 に答える
2

テストabcすると、コンパイラにとってはnullになる可能性があります。したがって、のようにポインターを逆参照するabc->stvと、エラーが発生する可能性があります。printf解決策は、コードをifブロック内に囲むことです。

if(abc)
{
    printf("%d",abc->stv)
    ...
}
于 2011-08-07T19:25:54.523 に答える