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 的资源泄漏的主要内容,如果未能解决你的问题,请参考以下文章