cppcheck:可能的空点取消引用

时间:2016-03-22 09:51:41

标签: 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);

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

您不需要在free之前检查空指针。你可以简单地说:

free(mem_limit_str);  // no if condition

此警告只是告诉if条件是多余的。

来自n1124草稿

  

7.20.3.2自由功能

     

<强>概要

#include <stdlib.h> 
void free(void *ptr); 
     

<强>描述

     

free函数导致ptr指向的空间   取消分配,即可用于进一步分配。如果是ptr   空指针,不会发生任何操作。 [...]

答案 1 :(得分:3)

std::free可以与空指针一起使用。检查是多余的。

  

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

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