我指的是编译器报告Memory Leak后 Dump出一大堆的地址,到底如何快速的确定这些地址是哪些变量呢?我可不想用step by step debug.

解决方案 »

  1.   

    你可以用boundcheck软件试试,在e.pku.edu.cn上搜索一下,现在大概是6.5版本,很不错
      

  2.   

    wei_gogo, 这个方法效率太低了吧:)ttzzgg,我说的是Memory Leak, 并不是程序编译错误。Memory Leak的信息上双击是不行的吧。:)
      

  3.   

    看看是否有:
     1.NEW的东西是否没有在~function()delete;
     2.有的对象在用完了有没有delete;
     3.有的成员在用完了有没有delete;
    总之,很麻烦的!
    有的需要经验!
      

  4.   

    实际上,堆分配的内存出现MemoryLeak,有许多工具可以找到,而且通过某些手段,如增加log等,可以相对容易找到。
    但是,使用COM对象比其它东西更容易产生MemoryLeak,而且很难排除。
    新版的VC++可以控制跟踪log,以跟踪iunknow接口的三个方法调用,以便找到没释放的接口。要解决MemoryLeak,最好的方法是所有的指针都使用相对应的智能指针,这样可以在设计阶段就避免掉大多数的MemoryLeak。(虽然不是所有情况都可以用智能指针,能用就尽量用吧。)
      

  5.   

    MSDN 里面有这个Technical ArticleDetecting and Isolating Memory Leaks Using Microsoft Visual C++就是说这个的了。