C++ cppcheck:可能的空点解引用
我下面的代码工作正常,但“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
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>也是相同的。