如果你不使用freelibrary,在你程序运行时,该DLL就一直在内存中没有释放。
静态调用时,只要不使用该DLL了,就会自动释放的。

解决方案 »

  1.   

    即使调用freelibrary系统也不会马上释放,使用freelibrary只是告诉系统dll已经不使用了,可以释放dll,系统在空闲的时候才释放dll。静态和动态调用dll的区别是静态调用是程序运行的时候系统自动加载dll,程序结束的时候自动释放dll,动态调用就是在你需要的时候调用dll,不需要的时候告诉系统可以释放dll,两种方法都有利弊,如果你的dll中函数调用的次数很少,那么就使用动态加载dll,如果很频繁的调用dll,那么动态加载显然就不合适了
      

  2.   

    freelibrary只是对该DLL的引用计数减一而已,知道计数减为0,该DLL才彻底的在内存中释放
      

  3.   

    to Celeronll:
      请问,如果dll中不是com组件,也有引用记数么?
      

  4.   

    动态库,总是做不好,why? :(
      

  5.   

    我就更不明白了既然资源:就是内存资源我使用windows2000 任务查看器的性能上看到的内存使用是不是内存资源呢?如果是当我调用我自己的dll是即使不释放内存的使用数还会下降到我调入前的请问有什么方法看到现在系统驻留内存的dll呢?
      

  6.   

    看来大家都不喜欢
    对dll进行讨论了如果是这样我就结分了
      

  7.   

    当然是内存资源了,理论上说释放dll会回到调用只前的内存资源,但是系统中每时每刻都在变化,所以很难达到调用dll前的状态了,dll不释放,理论上说就不会回到调用dll前的内存资源了