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为空指针。

编译器警告您,您已经假定它abc不是空指针(通过在第 98 行取消引用它),这意味着要么

  • 测试是多余的if (abc)(因为它永远不会是真的)或
  • abc第98 行的取消引用可能不正确,因为abc实际上可能为空。
于 2011-08-07T19:26:28.840 回答
2

如果你测试abc它对编译器来说意味着它可能是空的。因此,像 in 那样取消引用指针abc->stv是一个可能的错误。一种解决方案是将printf代码包含在if块内:

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