作为我的计划的一部分,我使用了以下代码:
///////////////
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
答案 0 :(得分:3)
if (abc)
测试abc
是否为空指针。
编译器警告您已经假定abc
不是空指针(通过在第98行解除引用),这意味着
if (abc)
测试是多余的(因为它永远不会是真的)或abc
解除引用可能不正确,因为abc
实际上可能为空。答案 1 :(得分:2)
如果您测试abc
,则对编译器意味着它可能为null。因此,像abc->stv
中一样取消引用指针是一个可能的错误。解决方案是将printf
代码括在if
块中:
if(abc)
{
printf("%d",abc->stv)
...
}