Delphi forms.pas内存泄漏?

The*_*oon 3 memory delphi dll memory-leaks

您好

我在Delphi 2006中有一个动态链接库,在其uses子句中有forms.pas.

如果我加载dll然​​后立即在for循环中卸载它,比如10000次,内存会慢慢爬上去.但是,如果我将Forms.pas从dll的uses子句中删除,那么问题就会消失.

代码很简单

这是我的dll代码:

library Project1;

uses
  Forms;

begin

end.
Run Code Online (Sandbox Code Playgroud)

这是我的调用应用程序的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  t_ImportHandle: LongInt;
  t_Index: Integer;
begin
  for t_Index := 0 to 10000 - 1 do
  begin
    t_ImportHandle := LoadLibrary('Project1.dll');
    FreeLibrary(t_ImportHandle);
  end;
 end;
Run Code Online (Sandbox Code Playgroud)

是否有其他人能够复制这个或知道原因是什么以及如何解决它?

Zoë*_*son 8

TApplication.Create使用MakeObjectInstanceClasses.pas中的函数.MakeObjectInstance使用VirtualAlloc分配一个4KB缓冲区,但不释放它,因此每次加载/卸载DLL时它都会泄漏那么多.安德烈亚斯·豪斯拉登(Andreas Hausladen)曾经有一篇关于它的博客文章,但看起来他已经把它取消了.在CodeCentral上发布了一个修复程序,它也包含在Andreas的VCL Fix Pack软件包中.