单文档应用程序内存泄露问题

风海流 2010-11-04 11:45:29
我使用VS2008 在一台Win7 64bit的机器上调试一个基于MFC的单文档应用程序,代码是参考另外一个完全正常的程序的。这两个单文档应用程序都使用了一模一样的拆分框架模式。现在的问题是被参考的应用程序运行没有任何问题,正在调试的应用程序VC在每次调试时都报内存泄露。消息的部分内容如下
Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {6975} normal block at 0x02508B78, 28 bytes long.
。。。。。。
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\oleinit.cpp(84) : {1263} client block at 0x024DF9A0, subtype c0, 68 bytes long.
a CCmdTarget object at $024DF9A0, 68 bytes long
。。。。。
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {1274} normal block at 0x024DFD80, 124 bytes long.
Data: < M > 00 00 00 00 00 00 00 00 00 00 00 00 E8 FB 4D 02
{1273} client block at 0x024DFD20, subtype c0, 32 bytes long.
a CDocManager object at $024DFD20, 32 bytes long

f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {1272} normal block at 0x024DFC90, 81 bytes long.
Data: <d A`@ @ > 64 99 41 60 40 00 00 00 40 00 00 00 01 00 00 00
.\XXXXXX.cpp(77) : {1271} client block at 0x024DFBE8, subtype c0, 108 bytes long.
a CSingleDocTemplate object at $024DFBE8, 108 bytes long
。。。
以上的内存泄露位置MFC明确指向了一个位置
.\XXXXXX.cpp(77)
XXXXXX是这个应用程序的名字,是App类的文件,第77行是进行单文档模板创建的语句,如下
(76) CSingleDocTemplate* pDocTemplate;
(77) pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CVirtualLabDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CVirtualLabView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);

我对比了这两个应用程序的源代码,在App,Doc和View类中的实现都是一致的,不知道为什么会出现内存泄露的问题。两个程序的App类和Doc类一模一样,在View类中,新的应用程序创建了一些其他类(自己写的)的对象,做了一些操作,在发现了这个问题之后我把View类中创建对象或者分配内存的代码都注释掉了,但是还是出现内存泄露的报告。同时值得注意的是报告内存泄露的对象都是Windows的类对象,都是MFC管理的,我没有主动地书写代码创建它们。有谁知道这个泄露是为什么吗?
...全文
180 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
风海流 2010-11-05
  • 打赏
  • 举报
回复
Visual Leak Detected 安装了,检测出一些。但是已有的DLL内部的内存配置检测不出不过还是很有用的,谢谢二楼
visualwind 2010-11-04
  • 打赏
  • 举报
回复
检查一下pDocTemplate有没有delete
不行的话先新建一个工程,确定没有泄露后逐渐加入代码
Eleven 2010-11-04
  • 打赏
  • 举报
回复
装个Visual Leak Detected检测一下

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧