cppcheck没有检测到epoll_create的资源泄漏

时间:2017-05-22 12:24:27

标签: posix static-code-analysis cppcheck

我正在使用Cppcheck 版本1.72 epoll_create(1)进行资源泄漏测试,但没有收到任何错误。

#include "sys/epoll.h"

int main (){
   int i = 0;
   int epollfd = 0;
   while (i != 10){
      epollfd = epoll_create(1);
      i++;
   }
}

如果cppcheck没有配备这种资源泄漏,有人能告诉我吗?

1 个答案:

答案 0 :(得分:0)

我是Cppcheck开发人员。

Cppcheck可以检测到此类资源泄漏。但是目前posix.cfg根本没有提到epoll_create(),因此Cppcheck对这个函数一无所知。

快速修复;创建一个包含epoll_create()等信息的epoll.cfg,并在运行cppcheck( - library)时使用它。

正确修复;更新posix.cfg文件(http://github.com/danmar/cppcheck/blob/master/cfg/posix.cfg)。如果您在github中向我发送拉取请求,我将很乐意应用它。

Cppcheck需要知道epoll_create()分配文件描述符以及如何释放它。我相信你使用close()方法来解除分配它,所以所需的配置是这样的:

  <resource>
    <alloc init="false">epoll_create</alloc>
    <dealloc>close</dealloc>
  </resource>