【问题标题】:cppcheck not detecting resource leak from epoll_createcppcheck 未检测到来自 epoll_create 的资源泄漏
【发布时间】:2017-05-22 12:24:26
【问题描述】:

我正在使用 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没有配备这种资源泄漏,谁能告诉我?

【问题讨论】:

    标签: posix static-code-analysis cppcheck


    【解决方案1】:

    我是一名 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2014-12-05
      • 2014-02-10
      • 1970-01-01
      相关资源
      最近更新 更多