我在 Solaris 中运行的代码上运行了 purify,它显示了很多内存泄漏。但是我检查了代码,大多数泄漏似乎都是无效的。
例如,
文件1.cpp
Obj* getMyObj()
{
Obj* obj = NULL;
if(condition)
{
obj = new Obj(); //Purify is reporting leak here
//Fill obj
}
...
return obj;
}
文件2.cpp
void myfunc()
{
Obj* myobj = getMyObj();
if(myobj == NULL)
return;
...
...
delete myobj; //The object is deleted here
}
即使对象被正确销毁File2.cpp
,为什么净化报告泄漏File1.cpp
?
编辑
NULL 检查只是一个错字,我更正了。