使用以下代码:
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 Hello谢谢你的帮助,但我尝试了不同的代码,总是得到相同的错误,即使使用该代码也是如此:
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();
}
}发布于 2020-07-06 18:28:57
在某些情况下,资源是有限的,如果资源没有被正确释放,那么它在下一次访问尝试时将不可用。
在第6行的to (QIODevice::WriteOnly | QIODevice::Append)获取的资源将在第12行和第14行丢失。但它们未正确释放,因此Klocwork将在此处显示资源泄漏警告。
Klocwork的RH.LEAK检查器发现与先前获得但未释放的资源相关的所有描述符都丢失的实例。
https://stackoverflow.com/questions/62715138
复制相似问题