内存泄露问题

在使用Xerces的时候,程序在退出的时候出现很多内存泄露,通过跟踪代码发现,程序在没有调用我的某个类的析构函数的时候就开始报告内存泄露了,而实际上系统报告的内存泄漏都是我将要在析构函数中删除的。我的那个类在某个dll中,为了避免系统谎报,可以通过调整系统卸载dll的顺序,在工程属性,链接,附加依赖最前端添加mfc80d.lib mfcm80d.lib,这样程序会在最后卸载MFC的这些库,你自几编写的库将在它之前卸载

如何定位到内存泄露位置:

按F11将程序定位到程序入口,然后在VS的watch窗口中输入{,,msvcr80d.dll}_crtBreakAlloc(注:我使用的是VS2005,其他版本对应修改里面的80),修改值-1为泄露的内存编号(程序退出时,在输出窗口中可以看到)。可以参考MSDN帮助_crtBreakAlloc主题

posted @ 2010-07-29 16:48  wangshuming  阅读(379)  评论(0编辑  收藏  举报