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