unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; txtThread = class(TThread)
private
public
procedure Execute; override;
end;var
Form1: TForm1;
ds:txtthread;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
beginds:=txtthread.Create(false);end;
procedure txtthread.Execute;
var
d:integer;
begin
FreeOnTerminate:=True;
d:=d+1;
ds.Terminate ;
ds.WaitFor ;
ds.Free;
ds:=nil;end;end.以上代码每按一次就会增加一点内存但却不能自动释放内存
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; txtThread = class(TThread)
private
public
procedure Execute; override;
end;var
Form1: TForm1;
ds:txtthread;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
beginds:=txtthread.Create(false);end;
procedure txtthread.Execute;
var
d:integer;
begin
FreeOnTerminate:=True;
d:=d+1;
ds.Terminate ;
ds.WaitFor ;
ds.Free;
ds:=nil;end;end.以上代码每按一次就会增加一点内存但却不能自动释放内存
ds.FreeOnTerminate:=True;
....
下面用主程序调用。
ds.Terminate;
freeandnil(ds);
procedure txtthread.Execute;
begin
sleep(100)
end;
form.Destroy;
form:=nil你仔细看看内存,已开始增一点点,后就不再增了,你试试