Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
Delphi 2006 Professional
|
Re: Ständiges Parsen und Schreiben pumpt Arbeitsspeicher vol
21. Okt 2006, 13:58
Grundsätlich werden alle lokalen Variablen nach Beendigung der Routine freigegeben. So auch deine Stringliste.
var sl : TStringlist;
sl ist aber in Wirklichkeit nur ein Zeiger auf ein TStringlist-Objekt. Es wird also nur der Zeiger, nicht aber das Objekt auf den Der Zeiger zeigt, freigegeben.
Um das zu verdeutlichen, schaun wir uns mal das erzeugen eines Objekts an.
sl := tStringlist.create;
tStringList.create erzeugt ein neues Objekt und liefert eine Referenz(Zeiger) auf das Objekt zurück.
Folgender Code :
sl := tStringlist.create;
sl := tStringlist.create;
erzeugt zwei StringListen. Die erste wird aber für immer verloren sein, da du den Zeiger auf das Objekt verlierst.
folgendes funktioniert :
for i:=0 to 99 do
begin
sl := tStringlist.create;
List.add(sl);
end;
du erzeugst in einer Schleife 100 Stringlisten. die einzelnen Referenzen speicherst du in einem TList-Objekt.
|