关于ExitInstance不执行,导致很多内存泄漏的问题
来源:互联网 发布:迪拜 知乎 编辑:程序博客网 时间:2024/05/22 05:06
昨天在编程过程中,突然某一次退出程序时,看了一相DebugView,发现竟然有这么多内存泄漏,大概100把条的样子,吓得我大汗长流.
要看信息. 多出在 strcore.cpp, 还有一些 afxtoolbar.cpp afxmenubar.cpp等等,全是MFC里的东西. 也有一些指向
IMPLEMENT_DYNCREATE 宏,还有就是InitInstance中的pDocTemplate = new CSingleDocTemplate.
并且在线程退出时,会提示.
The thread 0xBD8 has exited with code 3 (0x3).
在程序退出时执行不到ExitInstance中.
本来遇到内存泄漏,应该先查所有的new,但这些new没一个是自己写的,都是MFC向导生成的,释放应该不用我管.
然后就只有求助网络了.
百度,google了一会.得到以下几种可能性.
1. 某个地方调用了强制结束主线程的代码,使得线程没有正常终止,也就没有执行内存释放的代码了
2. 某个地方在释放内存时导致异常退出.
由于我确定自己没有使用强制结束线程的代码.所以第一种可能性排除了.
我就查第二种,然后在每个类的 析构函数中下断点,看是否在退出时都会进入.
果然,有一些类的析构函数没有被执行.问题找到了.
发现自己在一个类的析构函数中调用了一个KillTimer函数,都不知道当时是怎么想的.删除了,一切恢复正常,再也没有内存泄漏了.
小结:
如果遇到内存非自己代码中泄漏,
1. 检查有无线程和线程是否会正常终止.,
2.再检查每个类的析构函数,主要检查自己编写的类的析构函数以及自己动过的其它类的析构函数,看是否能正常析构,或者注释后能不能正常工作.
- 关于ExitInstance不执行,导致很多内存泄漏的问题
- 关于Android VideoView导致的内存泄漏的问题
- 关于Android VideoView导致的内存泄漏的问题
- 常见的导致Android内存泄漏问题
- 如何解决new了之后因为执行流跳转而导致的内存泄漏的问题
- 关于内存泄漏的问题
- 关于内存泄漏的问题
- 关于内存泄漏的问题
- 1、C++关于拷贝构造函数和赋值运算符重载问题的测试程序。因为调用顺序不清,导致内存泄漏new delete
- 关于地图API 使用导致内存泄漏问题
- 内存分配不成功导致内存泄漏的问题
- 关于内存泄漏问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- _vsnprintf 用法
- visual studio 2008安装完vss2005后,文件菜单没有[源代码管理]这一项
- Oracle监控的关键指标有哪些?
- Android build system note
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
- 关于ExitInstance不执行,导致很多内存泄漏的问题
- cocos2d中,设置层的可视区域
- JSP 中集成JQuery 插件的实用方法
- opencv ________time________fun()
- 地沟油炸豆腐串卖给学生 现场苍蝇蟑螂尸体遍横
- FileUpload获取不到路径的问题
- C指针的初始化与赋值
- 深入GetMessage和PeekMessage
- Response.ContentType 详细列表