高分寻找DLL动态反复加载导致内存泄露的终极解决方案,期待高手,UP有分

applebomb 2005-06-11 02:09:58
环境: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使用发生内存泄露的终极解决方案
...全文
206 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
applebomb 2005-06-15
  • 打赏
  • 举报
回复
BoundsChecker for Delphi找不到加卸载DLL发生的内存减少,不知道是我使用得不对还是什么?

检测源代码即使是最简单的动态调用DLL程序的代码都会发生泄露,应该不会是源代码里的问题

没有高手研究过这方面的问题么?
alphax 2005-06-15
  • 打赏
  • 举报
回复
你给个例子
giveusomecolor 2005-06-15
  • 打赏
  • 举报
回复
水平有限,只能up~水平有限,只能up~

advancejar 2005-06-11
  • 打赏
  • 举报
回复
magicfire 2005-06-11
  • 打赏
  • 举报
回复
水平有限,只能up~
Spacesoft 2005-06-11
  • 打赏
  • 举报
回复
终极解决方案就是…… 检查代码,呵呵

内存泄漏的可能很多的,Delphi 不是JAVA,一不小心内存就泄漏了。

推荐一个工具:BoundsChecker for Delphi

用它跑跑看,基本上所有的内存泄漏都能被跟出来。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧