zoukankan      html  css  js  c++  java
  • VC查找内存泄漏技巧【转】

    这篇文章来自:【http://blog.csdn.net/caimouse/archive/2006/10/31/1358269.aspx
    感谢 蔡军生 分享这一技巧
    在写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那块内存时,就中断,然后就可以查看调用栈,知道那里出错了。
    不过,使用这个来判断,就要仔细地分析了,由于内存的分配是动态的,并不能保证每次分配内存的号码是一样的。
  • 相关阅读:
    C++构造与析构 yongmou
    坏习惯 yongmou
    Python 字符串方法
    python 列表推导式轻量级循环
    python 循环遍历字典元素
    python 短路逻辑和条件表达式
    python 迭代器
    一些关于面向对象设计的思考
    python map内建函数
    Python 列表
  • 原文地址:https://www.cnblogs.com/ubunoon/p/VC_MemoryLeak.html
Copyright © 2011-2022 走看看