C++ cppcheck:可能的空点解引用

C++ cppcheck:可能的空点解引用,c++,cppcheck,C++,Cppcheck,我下面的代码工作正常,但“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); 有人能帮我解决这个问题吗?在fre

我下面的代码工作正常,但“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
ing之前,您不需要检查空指针。你可以简单地说:

free(mem_limit_str);  // no if condition
此警告仅说明
if
条件是冗余的

从草稿

7.20.3.2自由功能

简介

#include <stdlib.h> 
void free(void *ptr); 
#包括
无空隙(空隙*ptr);
说明

free函数使ptr指向的空间 已解除分配,即可供进一步分配。如果ptr是 如果指针为空,则不会发生任何操作。[……]

可以很好地与空指针一起使用。支票是多余的

如果ptr是空指针,则函数不执行任何操作


顺便说一句:
delete
delete[]
也是如此。

你可以
free(NULL)
,所以检查是无用的。那么如果mem\u limit\u str指向NULL,我会得到分段错误,对吗?好的,谢谢。我认为释放NULL无效。@奇拉格BTW,在C++中,对于<代码>删除> />代码>和<代码>删除[]/COD>也是相同的。