cppcheck : 可能的空点取消引用
Posted
技术标签:
【中文标题】cppcheck : 可能的空点取消引用【英文标题】:cppcheck : possible null point dereference 【发布时间】:2016-03-22 09:51:41 【问题描述】:我下面的代码工作正常,但“cppcheck”仍然发出警告,
Either the condition 'mem_limit_str!=0' is redundant or there is possible null pointer dereference: mem_limit_str.
下面是代码,
if (mem_limit_str!= NULL) //CPPCHECK error
free(mem_limit_str);
谁能帮我解决这个问题?
【问题讨论】:
你可以free(NULL)
,所以检查没用。
【参考方案1】:
您无需在free
ing 之前检查空指针。你可以简单地说:
free(mem_limit_str); // no if condition
这个警告只是告诉if
条件是多余的。
来自n1124草稿
7.20.3.2 免费功能
概要
#include <stdlib.h> void free(void *ptr);
说明
free函数使ptr指向的空间变为 已解除分配,即可供进一步分配使用。如果 ptr 是 空指针,不发生任何动作。 [...]
【讨论】:
那如果 mem_limit_str 指向 NULL,我会得到分段错误,对吧? 好的 试过了 谢谢。我认为释放 NULL 无效。【参考方案2】:std::free
可以很好地与空指针一起使用。检查是多余的。
如果 ptr 是一个空指针,该函数什么也不做。
顺便说一句:delete
和 delete[]
也是如此。
【讨论】:
@Chirag BTW,在 c++ 中,delete
和 delete[]
也是如此。以上是关于cppcheck : 可能的空点取消引用的主要内容,如果未能解决你的问题,请参考以下文章