在调用gethostname的时候,如下dll被加载了:
Loaded 'C:\WINNT\system32\rnr20.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\iphlpapi.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\icmp.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\mprapi.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\activeds.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\adsldpc.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\rtutils.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\setupapi.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\userenv.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\rasapi32.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\rasman.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\tapi32.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\dhcpcsvc.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\winrnr.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\rasadhlp.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\msafd.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\wshtcpip.dll', no matching symbolic information found.
而gethostname在整个程序运行中我只需要调用一次.我不希望这些dll常驻内存,ws2_32.dll我动态加载的.调用gethostname后我释放了这个dll.但是如上的dll却没有跟着释放掉.这是什么意思?dll不是有应用计数吗?还有谁在用这些没有释放的dll?有没有办法释放掉这些dll?高手们请发表一下意见.

解决方案 »

  1.   

    dll文件有个计数值一个线程调用他就加1反之减1,当为0时自动就卸了。
      

  2.   

    引用计数谁都知道.就是不知道微软的dll是否遵守此规则.
      

  3.   

    那一定是你引用别人的代码调用了这些dll中的function
    使得编译器自动加载
      

  4.   

    兄弟,你如果正在上网,或者用一个使用socket传送文件的程序,xx.dll就不得不用了
      

  5.   

    其实这个问题没有什么大不了的.对于winsock的使用我包含了头文件,连接了库文件.不需要操心这个问题.只是一个只需要获取机器名字的功能就让我的程序内存使用暴涨1M让我看不顺眼.本以为很多人会对这个问题感兴趣.因为大家都会面临到性能优化的问题.结果我错了.终于明白那么多软件内存消耗几十M是怎么回事了.
      

  6.   

    不然用动态装和缷吧,也许可行,不过一般来说我觉得有好多DLL是很正常的,一个系统即使什么程序也不运行,你可以用工具看看,系统里面就已经有几十个DLL在里面了(在平时的管理器里面是看不到的,我是在用WORD的时候有个关于里面的系统信息里面的软件里面看到的)