_CrtSetBreakAlloc一个对查泄漏非常有用的函数
2008-06-10 11:15
567 查看
在写VC的程序经常发现有内存出错的情况,运行结束之后,就会有报告是否内存出现泄漏情况,如下面所示:
Detected memory leaks!
Dumping objects ->
{223} normal block at 0x003CF650, 4 bytes long.
Data: < < > E8 F6 3C 00
{221} normal block at 0x003CF928, 16 bytes long.
Data: <( < ( < > 28 F9 3C 00 28 F9 3C 00 CD CD CD CD CD CD CD CD
{220} normal block at 0x003CF8D0, 24 bytes long.
Data: < < < < > D0 F8 3C 00 D0 F8 3C 00 D0 F8 3C 00 CD CD CD CD
{219} normal block at 0x003CF878, 24 bytes long.
Data: <x < x < x < > 78 F8 3C 00 78 F8 3C 00 78 F8 3C 00 CD CD CD CD
{68} client block at 0x003C3418, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003C3418, 64 bytes long
a CDynLinkLibrary object at $003C3418, 64 bytes long
Object dump complete.
像这样情况,其实有还是可以找出来是在那里创建的。不过,并不是报告出来的,都是真实的内存泄漏。要仔细分析,才能作出决定。因此,就需要找到这块内存是在那里分配的。那么有什么办法呢?使用下面的函数:
_CrtSetBreakAlloc(223);
这个函数,就设置了当分配上面223那块内存时,就中断,然后就可以查看调用栈,知道那里出错了。
不过,使用这个来判断,就要仔细地分析了,由于内存的分配是动态的,并不能保证每次分配内存的号码是一样的。
来源http://blog.csdn.net/caimouse/archive/2006/10/31/1358269.aspx
ms 的参考
http://support.microsoft.com/kb/151585/zh-cn
Detected memory leaks!
Dumping objects ->
{223} normal block at 0x003CF650, 4 bytes long.
Data: < < > E8 F6 3C 00
{221} normal block at 0x003CF928, 16 bytes long.
Data: <( < ( < > 28 F9 3C 00 28 F9 3C 00 CD CD CD CD CD CD CD CD
{220} normal block at 0x003CF8D0, 24 bytes long.
Data: < < < < > D0 F8 3C 00 D0 F8 3C 00 D0 F8 3C 00 CD CD CD CD
{219} normal block at 0x003CF878, 24 bytes long.
Data: <x < x < x < > 78 F8 3C 00 78 F8 3C 00 78 F8 3C 00 CD CD CD CD
{68} client block at 0x003C3418, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003C3418, 64 bytes long
a CDynLinkLibrary object at $003C3418, 64 bytes long
Object dump complete.
像这样情况,其实有还是可以找出来是在那里创建的。不过,并不是报告出来的,都是真实的内存泄漏。要仔细分析,才能作出决定。因此,就需要找到这块内存是在那里分配的。那么有什么办法呢?使用下面的函数:
_CrtSetBreakAlloc(223);
这个函数,就设置了当分配上面223那块内存时,就中断,然后就可以查看调用栈,知道那里出错了。
不过,使用这个来判断,就要仔细地分析了,由于内存的分配是动态的,并不能保证每次分配内存的号码是一样的。
来源http://blog.csdn.net/caimouse/archive/2006/10/31/1358269.aspx
ms 的参考
http://support.microsoft.com/kb/151585/zh-cn
相关文章推荐
- 调试基础:函数 _CrtSetBreakAlloc()使用blog
- _CrtSetBreakAlloc 内存泄漏
- C++内存检测函数_CrtSetBreakAlloc()
- _CrtSetBreakAlloc(…)来检测内存泄漏+VC使用CRT调试功能检测内存泄漏(转)
- _CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题
- C++内存检测函数_CrtSetBreakAlloc()
- _CrtSetBreakAlloc(…)来检测内存泄漏
- _CrtSetBreakAlloc(…)来检测内存泄漏
- _CrtSetBreakAlloc(…)来检测内存泄漏
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- 一个非常有用的函数——COALESCE
- php 非常有用的高级函数PATH_SEPARATOR常量和set_include_path 3ff8
- 内存泄露调试之 _CrtSetBreakAlloc
- 一个非常有用的函数——COALESCE
- 一个非常有用的函数——COALESCE
- 【转】_CrtSetBreakAlloc 内存泄漏
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- (转)内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc