cppcheck 未检测到来自 epoll_create 的资源泄漏

Posted

技术标签:

【中文标题】cppcheck 未检测到来自 epoll_create 的资源泄漏【英文标题】:cppcheck not detecting resource leak from 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没有配备这种资源泄漏,谁能告诉我?

【问题讨论】:

【参考方案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>

【讨论】:

以上是关于cppcheck 未检测到来自 epoll_create 的资源泄漏的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView 未检测到网页 cookie

SKPhysicsContact未检测到categoryBitMask碰撞

Pulseaudio未检测到蓝牙耳机[关闭]

Keras tensorflow 后端未检测到 GPU

ansans-错误!任务中未检测到任何操作

Ubuntu 未检测到第二个 nVidia GPU