Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TObject + TList + Speicherverwaltung
mcbain - Mo 20.02.12 10:50
Titel: TObject + TList + Speicherverwaltung
Hallo,
ich habe eine Frage zur Speicherverwaltung.
Wenn ich eine Liste voller Objekte erstelle, muss ich dann den Speicher jedes Objektes darin händisch wieder freigeben oder reicht es einfach die Liste wieder freizugeben?
Hier mal ein Beispiel:
.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| .. var liste: TList; myObject: TObject; i:integer; begin liste := TList.Create; try for i := 0 to 10 do begin myObject := TObject.Create; liste.Add(myObject);
end;
finally liste.Free; end; end; |
Entsteht hierdurch eine Speicherlücke?
Ich komme aus der Java-Ecke und da stellt sich diese Frage ja nicht, also bitte nicht wundern.
Wäre nett, wenn mir jemand diese Frage beantworten könnte, bin mir nämlich gerade nicht mehr so sicher.
Vielen Dank.
Gruß
mc
Nersgatt - Mo 20.02.12 11:06
Jepp, das ist ein Speicherleck.
Du kannst aber eine TObjectList statt der TList verwenden. Die hat die Eigenschaft "OwnsObjects". Wenn du die auf True setzt, werden die Objekte beim Freigeben der Liste mit freigegeben.
mcbain - Mo 20.02.12 11:21
Gesagt, getan. Habe es auf die ObjectList umgestellt.
Vielen Dank für die schnelle Antwort.
Gruß
mc
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!