环境:WIN2000SP4 DELPHI7我的程序采用PLUGIN方式编程,参照DELPHI PLUGIN的调用方式使用了Sharemem单元。PLUGIN里我试了两种调用方式,一种是纯计算用的功能函数调用,另一种是调用DLL内窗体。DLL内窗体我做了一个简单的查询数据库动作。所有的操作都是完全按照DLL动态加载的方式使用LoadLibrary加载和Freelibrary释放,并且窗体使用后也进行free释放(后来实验证明使用destory释放还是一样)。现在问题是:
调用纯计算的DLL功能函数后卸载DLL,每次调用后主程序占用内存增加4K~12K不等
采用调用窗体查询数据库的DLL功能函数后卸载DLL,每次调用后主程序增加40K~500K不等我的DLL采用的动态加载,使用完后卸载的方式,使用频度比较高,那么会发生太多的内存泄露,有没有好的解决办法。我仔细查过以前的CSDN相关DLL内存泄露的贴子,没有找到可解决的办法。我找过的帖子有:
http://search.csdn.net/Expert/topic/2578/2578998.xml?temp=.7580835
http://search.csdn.net/Expert/topic/1422/1422342.xml?temp=.2961084
http://search.csdn.net/Expert/topic/542/542129.xml?temp=.4092981所以想寻找一个能够解决DLL使用发生内存泄露的终极解决方案

解决方案 »

  1.   

    终极解决方案就是…… 检查代码,呵呵内存泄漏的可能很多的,Delphi 不是JAVA,一不小心内存就泄漏了。推荐一个工具:BoundsChecker for Delphi用它跑跑看,基本上所有的内存泄漏都能被跟出来。
      

  2.   

    BoundsChecker for Delphi找不到加卸载DLL发生的内存减少,不知道是我使用得不对还是什么?检测源代码即使是最简单的动态调用DLL程序的代码都会发生泄露,应该不会是源代码里的问题没有高手研究过这方面的问题么?
      

  3.   

    水平有限,只能up~水平有限,只能up~