Einzelnen Beitrag anzeigen

kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Ständiges Parsen und Schreiben pumpt Arbeitsspeicher vol

  Alt 21. Okt 2006, 12: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.
  Mit Zitat antworten Zitat