TWSDLLookup.Destroy方法中的Delphi XE内存泄漏
我正在使用Delphi XE.我使用Delphi Soap遇到了内存泄漏问题.原来是由于TWSDLLookup.Destroy中缺少.Free调用,如
QC 91160中所述
我遇到的问题是描述的解决方法,它只是将FLookup.Free添加到TWSDLLookup.Destroy方法. Rob Kennedy在同一页面上的回答描述了一种涉及代码挂钩的不同技术 – 但它似乎并不适用于对象方法.我已经完成了他的建议并下载了TNT Unicode控件的免费代码并找到了相关的程序,但我一直无法找到有关如何挂钩对象方法的信息 – 如果这确实可行的话.如果我能做到这一点,我会挂钩TWSDLLookup.Destroy并添加FLookup.Free调用. 如何解决这个问题的任何想法将非常感激.我是一个新手程序员,所以我希望我错过了一些明显的东西? 解决方法
你要做的事实上工作得很好.我自己测试了一下.这是我使用的项目文件:
program WSDLLookupTest; {$APPTYPE CONSOLE} uses WSDLLookup in 'WSDLLookup.pas'; var intf: IInterface; begin intf := GetWSDLLookup as IInterface; end. 我制作了WSDLLookup.pas文件的副本,并将其放在与.dpr文件相同的目录中.然后,在副本而不是原始副本中,我修改了TWSDLLookup.Destroy. destructor TWSDLLookup.Destroy; begin Beep; ClearWSDLLookup; FLookup.Free; inherited; end; 我添加了Beep以向自己证明此代码确实正在执行. 在你的位置,我肯定会使用这个解决方案而不是尝试代码钩子.当然,另一个简单的解决方案是升级到后来的Delphi版本. 要注意的一件事是记住在升级时删除修改后的单元.泄漏在XE2中得到修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |