我在 计算器 里注入了一个dll,在dll里创建了一个线程,什么都不做,只是循环常驻var
test: tstringlist;
begin
test := tstringlist.create;
// 线程开始
while true do
begin
sleep(100);
end;
// 线程结束
test.free;
end;我想在 计算器 退出时释放这个线程
在dll的DLL_PROCESS_DETACH中做处理,但是经过调试发现计算器退出后所有线程都立即结束了,不会执行后面的test.free
这样就造成了内存泄漏不知道有人碰到过这个问题没,怎么解决?
test: tstringlist;
begin
test := tstringlist.create;
// 线程开始
while true do
begin
sleep(100);
end;
// 线程结束
test.free;
end;我想在 计算器 退出时释放这个线程
在dll的DLL_PROCESS_DETACH中做处理,但是经过调试发现计算器退出后所有线程都立即结束了,不会执行后面的test.free
这样就造成了内存泄漏不知道有人碰到过这个问题没,怎么解决?
TMyThread = class(TThread)
private
test: TStringList;
{ Private declarations }
protected
procedure Execute; override;
public
destructor Destroy; override;
end;implementation{ TOneThread }destructor TMyThread.Destroy;
begin
if assigned(test) then
freeandNil(test);
inherited;
end;