高分寻找DLL动态反复加载导致内存泄露的终极解决方案,期待高手,UP有分
环境: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使用发生内存泄露的终极解决方案