请教关于VS2010中判断内存泄漏的问题?

clxye 2010-07-05 08:42:14
以前一直都用vc6.0的,当时检查内存泄漏主要用的是VC的 _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF)函数和Bounds Checker工具。长时间不用第一种方法已经不会用了。在2010中安装Bounds Checker好像用不了,安装后没有相应的工具栏,不知是不是不支持2010。

请问高手2010中有没有什么定位内存泄露的工具或方法?Bounds Checker有没有在2010下可用的版本?

谢谢!!

Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {45857} normal block at 0x023086A0, 44 bytes long.
Data: < R > 84 CF CE 52 0D 00 00 00 0D 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {45856} normal block at 0x023085C0, 164 bytes long.
Data: < ^ 0 > 00 00 00 00 00 00 00 00 EE 19 5E B4 B0 86 30 02
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\map_sp.cpp(83) : {45855} normal block at 0x02308540, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxtooltipctrl.cpp(39) : {45853} client block at 0x02308350, subtype c0, 252 bytes long.
a CMFCToolTipCtrl object at $02308350, 252 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {45835} normal block at 0x02302C60, 40 bytes long.
Data: < R > 84 CF CE 52 0B 00 00 00 0B 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {45834} normal block at 0x02307AE0, 164 bytes long.
Data: < ox p,0 > 00 00 00 00 00 00 00 00 6F 78 EA CD 70 2C 30 02
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\map_sp.cpp(83) : {45833} normal block at 0x02307880, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxtooltipctrl.cpp(39) : {45832} client block at 0x023079A8, subtype c0, 252 bytes long.
a CMFCToolTipCtrl object at $023079A8, 252 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {45813} normal block at 0x02307088, 38 bytes long.
Data: < R > 84 CF CE 52 0A 00 00 00 0A 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {45812} normal block at 0x02306FA8, 164 bytes long.
Data: < T & p0 > 00 00 00 00 00 00 00 00 54 98 F9 26 98 70 30 02
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\map_sp.cpp(83) : {45811} normal block at 0x02306F28, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxtooltipctrl.cpp(39) : {45810} client block at 0x02303840, subtype c0, 252 bytes long.
a CMFCToolTipCtrl object at $02303840, 252 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {45790} normal block at 0x02303498, 38 bytes long.
Data: < R > 84 CF CE 52 0A 00 00 00 0A 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {45789} normal block at 0x023033B8, 164 bytes long.
Data: < ?X 40 > 00 00 00 00 00 00 00 00 D6 3F 58 C0 A8 34 30 02
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\map_sp.cpp(83) : {45788} normal block at 0x02302E00, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxtooltipctrl.cpp(39) : {45787} client block at 0x02302CC8, subtype c0, 252 bytes long.
a CMFCToolTipCtrl object at $02302CC8, 252 bytes long
Object dump complete.
...全文
917 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
clxye 2010-07-05
微软这么多年在这方面不会没有考虑到吧?

大家有没有其它建议?
回复
踏实每一步 2010-07-05
没用过2010,不过第一种方法比较通用。
回复
jijun1018 2010-07-05
我也想问下,感觉即使new 和 delete也会有内存泄露的地方
只不过比较少,想问下是为什么呀
回复
帮顶。
回复
BlueMap 2010-07-05
我觉得,最好的方式是要培养好的习惯,有new的地方同时写下delete。
对于大部分的内存泄露一般是new以后没delete引起的,可以用vs2005中的搜索功能,搜索所有的new然后查看哪个new后面没有delete。
回复
guoln1010 2010-07-05
不懂 学习下
回复
zhu6789888 2010-07-05
该库是嵌入到工程中的,用于检测内存泄露
回复
zhu6789888 2010-07-05
vld 库试试,google 搜下vld
回复
刚刚凉 2010-07-05
LeakDiag, UMDH这些微软的工具都可以诊断内存泄漏
如果是CE 上,要用Application verifier
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告