作为我的程序的一部分,我使用了以下代码:
///////////////
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
if (abc)
测试是否abc
为空指针。
编译器警告您,您已经假定它abc
不是空指针(通过在第 98 行取消引用它),这意味着要么
if (abc)
(因为它永远不会是真的)或abc
第98 行的取消引用可能不正确,因为abc
实际上可能为空。如果你测试abc
它对编译器来说意味着它可能是空的。因此,像 in 那样取消引用指针abc->stv
是一个可能的错误。一种解决方案是将printf
代码包含在if
块内:
if(abc)
{
printf("%d",abc->stv)
...
}