c++ - 内部Klocwork的资源泄漏

标签 c++ qt qfile resource-leak klocwork

使用此代码:

bool initQdbgLog()
        {
          deleteOldLogs(); //delete old log files
          initLogFileName(); //create the logfile name
          QFile outFile (logFileName);
          if (outFile.open (QIODevice::WriteOnly | QIODevice::Append)) {  <<<<<<<<<<<<<(1)
              qInstallMsgHandler (QDBGLOG::myMessageHandler);
              return true;  <<<<<<<<<<<<<(2)
          } else {
              return false;
          }
        }
Klocwork发出资源泄漏信号:
Resource acquired to '@temp_3' at line <<<(1) may be lost here <<<(2) 
有人知道为什么吗?

@Sivanesh Waran
您好,谢谢您的帮助,但是我尝试使用不同的代码,即使使用该代码,也总是遇到相同的错误:
void initQdbgLog()
{
    deleteOldLogs(); //delete old log files
    initLogFileName(); //create the logfile name
    QFile outFile (logFileName);
    bool result = outFile.open (QIODevice::WriteOnly | QIODevice::Append);
    if (result) {
        qInstallMsgHandler (QDBGLOG::myMessageHandler);
        outFile.close();
    }
}

最佳答案

在某些情况下,资源是有限的,并且如果没有正确释放资源,则在下一次访问尝试时它将不可用。
在第6行到(QIODevice::WriteOnly | QIODevice::Append)处获取的资源将在第12和14行丢失。但是它们没有正确释放,因此Klocwork将在此处显示资源泄漏警告。
Klocwork的RH.LEAK检查器查找实例,其中所有与先前获取的但未释放的资源相关的描述符都丢失了。

关于c++ - 内部Klocwork的资源泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62715138/

相关文章:

c# 前端 GUI 调用 linux C++ 函数

c++ - Qt Widgets,是否必须将包含的小部件设置为父级?

qt - QListView 可以有不同的垂直和水平间距吗?

c++ - 通过 Qt 中的 csv 文件进行解析

c++ - 有没有办法检测原始参数是否可变大小?

c# - 在编程语言中扩展预增量运算符

c++ - 在 C++ 上重新分配二维数组

c++ - Qt QProgressBar 不确定

c++ - 独占打开文件/锁定文件

Qt 不能创建/写入 C :\