最近写了一个程序,用VC写的,最后一切都通过,运行正常,也未检测出任何的内存泄露,以为大功告成,可是朋友建议用BoundChecker再检查一遍,另我十分头痛的事发生了,居然找到十几个泄露的地方,更另人不得其解的是这些泄露还都是在系统或MFC的代码中产生的,不知道有没有高人指定迷经,探究一下其中原由!出现的提示大概有如下信息:Memory Leak: 64 bytes allocated by CObject::operator new in dlldb.cpp [92], HANDLE: 0x02f514b0Resource Leak: Allocated by LoadLibraryA in delayhlp.cpp [119], HANDLE: 0X74FD0000Interface Leak: IOleObject; this 001324b4 count: 1
Interface Load: IStorage; this 06660758 count: 1这里我只是列出了其实几个典型的报告,请帮忙看看! 谢谢!

解决方案 »

  1.   

    boundschecker的检查很严格,应用程序中出现你上述的一些警告应属正常,一般只要列表中没有你自己代码段中的Memory Leak/Resource Leak就可以了,大部分程序都这样,不必烦恼。
      

  2.   

    pcman1990(pcman):   谢谢您!听了你的话,我放心多了,因为我的这个程序要长时间的运行,可能运行个一二年都不
    不停下来,如果有内存泄露的话,后果不能设想,所以,一个泄露都不能放过。
       但事实到底是不是这样! 我还是慎重! 
       谢谢您!有分!
      

  3.   

    BoundChecker是吓人的,不过有时候会反映一些表面上看不出来的问题,当它报MFC或VC的内存泄露的时候,也要小心检查自己的程序,看看是否是由于你而引起的。
      

  4.   

    理解你的顾虑。
    你可以做一下测试,用VC app wizard创建一个project,自己什么也不加,然后打开boundschecker并运行,也会看到一条Resource Leak的。其实,所谓连续运行很长时间,只是你的期望,到时候,可能Windows本身的问题早就造成系统的crash了:) Rei_tang(Let me come to you)说的是对的,主要是仔细查查,是不是有些问题可能是你程序所引起的,这些一般是可以找到的,只要排除这些问题就可以了。而从你列出的那些信息,似乎不象。
      

  5.   

    最好不要直接使用如"aaaa"的字符串,而是用字符串变量b="aaaaa";