由于程序很大,用boundscheck这些工具都很慢,无法忍受,不知哪位高手有一些比较好的查找内存泄漏的方法。现在程序的memory leak很多都是GDI方面的,还有处理字符串的

解决方案 »

  1.   

    我有一个方法,不过必须是在debug下:
    1   #include <afx.h>
    2  在文件开头加上:
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    3   按F5进入调试状态,如果在Output的debug窗口有一句"Detected memory leaks!"说明有内存泄漏,双击Output的Debug窗口检测到的内存泄漏例出的行,就可以到达内存泄漏代码行的位置。
      

  2.   

    楼上的强啊,不知道这个#define有什么来头,给讲讲吧?
      

  3.   

    用rational purify吧,弄个好机子
      

  4.   

    AppVerifier
    Holodeck
    BoundCheck
      

  5.   

    you can download appVerifier from ms web, it's very useful
      

  6.   

    BoundCheck是比较慢,程序比较大的话,我们这里通常是逐块测试,就是所谓的单元测试,一个个功能模块分开来测试。通常Memory Leak都是Pointer影响的,但是如果是MT编程,那么启动和禁止Thread和多个Thread之间通讯很容易Memory Leak,处理这里问题尤其简直是个噩梦。
      

  7.   

    Bounds Check
    项目越大越慢
    超过50个模块的话就可以死掉了...
      

  8.   

    我用的是 guoxiny(狼) 的办法,笨是笨了的,我自认为很有效。
    另外在说一个没出息的办法,在怀疑有泄露的地方让他多次循环,让他漏得多一点,通过windows任务管理器的性能就可以看出来。
    方法不好,不能大用。见笑了。
      

  9.   

    俺只用过BoundsCheck,个人感觉
    内存检查的工具都只能检查出那些明显的错误,而这些错误对于成熟的程序员来说
    遵守良好的编程习惯和约束规范就都能够避免
    而那些复杂的内存泄漏,工具也查不出来
    还得在代码上保证,跟踪调试
    当然,这类工具还是非常非常有用的,只是俺用过的dd太少
      

  10.   

    memory mapper, you can see how much ram has been allocated.
    May u good luck
      

  11.   

    softice书店有这方面的使用说明书!!!还有就是---------段钢新出的那本《加密,解密》。。9月份的《程序员》上有一篇书评,说是上面有SOFTICE的使用说明,我今天也见到这本书了但是现在功力还不够,先买了一本-------罗的《windows环境下32位汇编语言》
    你可以先看看《加密,解密》。。
    上有没有,是不是符合你的要求!!!
      

  12.   

    vs.net里面有内存泄漏监测功能,可以一用