TidHTTP が GET の後でサーバーの応答を待っているときにスレッドが終了しているときに、TidHTTP に関連するいくつかのメモリ リークが発生しました。
例 :
aThread = class(TThread)
private
FidHTTP :TidHTTP;
FCommand :String;
public
procedure Execute(); override;
constructor Create(aCommand :String); override;
procedure Disconnect;
end;
procedure aThread.Execute();
var response :String;
begin
response := FidHTTP.Get(FCommand);
end;
procedure aThread.Disconnect;
begin
if ((FidHTTP <> nil) and (FidHTTP.Connected)) then FidHTTP.IOHandler.CloseGracefully;
end;
constructor aThread.Create(aCommand :String); override;
begin
FCommand := aCommand;
inherited Create;
end;
アプリケーションを閉じるときに、これでスレッドを停止します。
aThread.Disconnect;
aThread.Terminate;
aThread.Free;
メモリーリークを解決するにはどうすればいいですか?
FastMM4 Log :
13 - 20 bytes: TIdThreadSafeInteger x 1
21 - 36 bytes: EAccessViolation x 1, TIdCriticalSection x 2
181 - 212 bytes: UnicodeString x 1
ありがとう :)