Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

Funktion verursacht Memory-Leak >>> Warum ?

  Alt 30. Jun 2006, 21:22
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 ?
  Mit Zitat antworten Zitat