So... Und ich hab da auch mal was nettes:
Folgendes Konstrukt:
Delphi-Quellcode:
type
TThreadVars = record
sServerHost : String;
sRemoteIP : String;
sPHPSession : String;
sVar1 : String;
sVar2 : String;
sVar3 : String;
sVar4 : String;
sVar5 : String;
dVar1 : TDateTime;
iVar1 : Int64;
(* --- Request Infos --- *)
pThread : ^TIdContext;
pRequest : ^TIdHTTPRequestInfo;
pResponse : ^TIdHTTPResponseInfo;
end;
threadvar
tv : TThreadVars;
Am Anfang des Threads werden alle Felder gefüllt bzw. irgendwann im laufenden Thread.
Am Ende des Threads wird folgendes aufgerufen:
Delphi-Quellcode:
Finalize(tv);
FillChar(tv, SizeOf(tv), 0);
Und was passiert?
Richtig, ich hab ein Memory Leak.
Allerdings nur in den ersten 3 String Variablen.
Wenn ich diese per Hand auf zurücksetze ( var := ''; ) dann ist das Memory Leak weg...