我在调试我的程序的时候,boundschecker发现了我系统的资源泄漏
但我发现这个资源不是我的写的程序里创建的,而在系统自己带的
文件里创建的(如dllinit.cpp).这是怎么回事,系统自己创建的资源
需要我来释放吗?那应该如何释放呢?我的代码做成了一个DLL
资源泄漏如下:
Resource leak: allocated by LoadLibraryA in dllinit.cpp (505),
Resource leak: allocated by GlobalAddAtomA in wincore.cpp
Resource leak: allocated by SetPropA in wincore.cpp (586)
大侠指教, THX!

解决方案 »

  1.   

    如果DLL中分配的资源需要由 调用者来释放,那系统里面应该有相应的接口;
    《WINDOWS核心编程》里面好象有个关于由谁释放DLL资源的例子,不过记不清了;
      

  2.   

    你应该是使用了外部的DLL而没有释放,加载DLL主要有两种方法:一是编译期链接,运行期自动加载所需的DLL,这种情况一般不会发生你提出的那种内存泄漏;第二种就是利用LoadLibrary加载,如果程序结束时你没有调用FreeLibrary释放相应的DLL,就有可能发生你提出的那种内存泄漏。