Hi,
folgende Funktion wird in meinem Programm einige 100000 mal pro Tag aufgerufen. Das Programm belegt morgens nach dem Start etwa 17 MB. Abends belegt das Tool etwa 80 MB.
Folgende Funktion scheint dafür verantwortlich zu sein ...
CallJob.Rufnummer := RemoveChars(CallJob.Rufnummer);
Delphi-Quellcode:
function RemoveChars(Rufnummer: string): string;
var i: Integer;
begin
result := '';
if length(Rufnummer) = 0 then exit;
Rufnummer := stringreplace(Rufnummer, '+', '00', []);
for i := 0 to length(Rufnummer) do
if Rufnummer[i] in ([#48..#57]) then result := result + Rufnummer[i];
Setlength(Rufnummer,0);
end;
Offensichtlich wird irgend ein String nicht aus dem Speicher entfernt.
Wenn ich den Funktionsaufruf "CallJob.Rufnummer := RemoveChars(CallJob.Rufnummer);" auskommentiere, ist das Speicherleck weg ...
Wo und Wie kann ich den Stringspeicher wieder sauber freigeben ?