|
|

楼主 |
发表于 2008-5-16 01:11:00
|
显示全部楼层
Re:map内存泄露
原来是误报,我用了下面这个类来检测是否内存泄露。
#define CRTDBG_MAP_ALLOCA
#include <crtdbg.h>
class memcheck{
public:
memcheck(){}
virtual ~memcheck(){
std::cout<<"~memcheck is cleared?"<<endl;
_CrtDumpMemoryLeaks();
}
}; // end class
然后我这么在主函数写的
map<string, int> tbl;
int main()
{
memcheck m;
return 0;
}
由于memcheck是主函数内定义的第一个对象,所以它的析构函数将在最后程序结束前被调用,于是
就会检测到是否有内存泄露。
这样写的话果然就报告出map内存泄露了。
但是如果我这样写内存泄露就没有了。
memcheck m;
map<string, int> tbl;
int main()
{
return 0;
}
也就是让memcheck定义在所有对象之前,而如果我颠倒下顺序则又显示map内存泄露了。
不知道哪位高手分析一下原因。 |
|