进程多次LoadLibrary同一个动态库而不FreeLibrary行吗?这样的话动态库在内存中是几份?
另外类的构造函数中调用LoadLibrary后析构函数中不FreeLibrary行吗?

解决方案 »

  1.   

    LoadLibrary和FreeLibrary只对当前进程有影响
    DLL在每个进程中都维护一个引用计数,所以多次LoadLibrary只是增加了计数而已
    因此DLL只被映射一次,所以只有一份不FreeLibrary不好,这样会导致DLL在程序运行过程中不会被卸载,
    不过一般情况下问题不大,
    因为一旦程序退出了系统会替你自动FreeLibrary,对其他程序没有影响
    除非你的要求很特殊或者DLL占内存太大
      

  2.   

    一份,如果怕重复LoadLibrary先GetModuleHandle一下
      

  3.   

    DLL在进程内只有一份,调用几次LoadLibrary,DLL的引用计数就是几,FreeLibrary可以降低
    这个引用计数,调用几次FreeLibrary,DLL的引用计数就减几。
    最好是让LoadLibrary和FreeLibrary成对的出现!