cppcheck 检测到资源泄漏 - 漏报?
cppcheck detects a resource leak - a false negative?
cppcheck 检测到以下代码中的资源泄漏。
我认为这是一个假阴性。
如果不是,你能解释一下为什么是资源泄漏吗?
bool fileExists(const char* filename)
{
FILE* fp = fopen(filename, "r");
bool result = (fp != NULL);
if (result) fclose(fp);
return result; // <-- (cppcheck error) Resource leak: fp
}
是的,它是假阴性,当fp
没有关闭
时,cppcheck错误地检测到一个理论上可能的分支
我个人将此代码重写为:
FILE* fp = fopen(filename, "r");
if (fp != NULL) {
fclose(fp);
return true;
}
return false;
cppcheck 检测到以下代码中的资源泄漏。 我认为这是一个假阴性。 如果不是,你能解释一下为什么是资源泄漏吗?
bool fileExists(const char* filename)
{
FILE* fp = fopen(filename, "r");
bool result = (fp != NULL);
if (result) fclose(fp);
return result; // <-- (cppcheck error) Resource leak: fp
}
是的,它是假阴性,当fp
没有关闭
我个人将此代码重写为:
FILE* fp = fopen(filename, "r");
if (fp != NULL) {
fclose(fp);
return true;
}
return false;