Ich füge einige TObject
Nachkommen zu einem TStringList
, zum Beispiel durch den Aufruf AddObject
. Ich möchte, dass sie freigegeben werden, wenn ich das Listenobjekt freigebe. Gibt es einen Weg, dies zu erreichen?Kann die TStringList Objekte, die an ihre Objekte angehängt sind, automatisch freigeben?
8
A
Antwort
14
Die OwnsObjects
Eigenschaft von TStringList
sollte auf True
gesetzt werden, damit die Liste ihre Objekte freigibt, wenn sie zerstört werden. Dies kann entweder durch Aufruf der constructor overload that receives the OwnsObjects
parameter oder durch explizites Festlegen der Eigenschaft nach der Erstellung erreicht werden. Es ist vorzuziehen, OwnsObjects
als Teil der Konstruktion des Objekts zu setzen.
Die documentation beschreibt die Eigenschaft wie folgt aus:
Die OwnsObjects Eigenschaft gibt an, ob die String-Liste der gespeicherten Objekte oder nicht besitzt. Wenn die Eigenschaft OwnsObjects auf True gesetzt ist, wird der Destroy-Destruktor den für diese Objekte reservierten Speicher freigeben.
Verwandte Themen
- 1. Temporäre COM-Objekte freigeben
- 2. ODBC-Objekte korrekt freigeben?
- 3. Mehrere Objekte in Delphi freigeben
- 4. Muss ich diese Objekte freigeben?
- 5. Objekte an vorhandene Objekte anhängen
- 6. Strategie zum Zuweisen/Freigeben vieler kleiner Objekte
- 7. JSP implizite Objekte sind Singleton-Objekte?
- 8. Objekte zusammenführen, die verschachtelte Map-Objekte enthalten
- 9. Wie kann ich ein Objekt aller Objekte filtern, die Objekte sind?
- 10. Warum kann ich Objekte in C++ nicht zu Datenelementen machen, die andere Objekte sind?
- 11. Hibernate, automatisch persistente abhängige Objekte
- 12. Abnehmen Objekte, die Sammlungen
- 13. Wie Sie Objekte aus dem Speicher freigeben
- 14. Java - Speicher-Objekte in einer Hierarchie, die ihre Klassenvererbung folgt
- 15. Warum muss ich diese Objekte nicht freigeben?
- 16. Zwei .NET-Objekte, die gleich sind nicht sagen, sie sind
- 17. Sind die Objekte einer Combobox leer, wenn sie leer sind?
- 18. Beispiel für Objekte, die ihre Methoden rekursiv aufrufen
- 19. Sind DOM-Elemente Objekte?
- 20. Bilder, die nicht an E-Mail angehängt sind
- 21. Konvertieren Json.NET Objekte zu herkömmlichen .NET-Objekte ohne die Typen
- 22. Sind Lambda-Wert-Objekte?
- 23. Sind Java-Klassen Objekte?
- 24. Objekte, die Bäume darstellen
- 25. JSONArray.names() reorganisiert die Objekte?
- 26. Objekte, die voneinander wissen
- 27. Was sind Vertex Array Objekte?
- 28. Objekte durch ihre Parameter suchen und zusammenführen
- 29. Elasticsearch Rückkehr verschachtelte Objekte ohne ihre Eltern
- 30. Kann ich Doctrine-Objekte oder ihre Zuordnungsdateien in Unterordnern organisieren?
Es ist ein Duplikat von http://stackoverflow.com/questions/9148659/how-to-free-objects-in-stringlist-in-delphi-7, aber diese Frage ist schlecht geschrieben. Das hält mich davon ab, so düpiert zu schließen. –
@iMan Ich habe den Code aus der Frage entfernt. Es ist nicht viel Sinn, das in der Frage zu erwähnen, da es die Frage ziemlich gut beantwortet. Wenn Sie Ihre eigene Frage beantworten, ist es am besten, den Antwortteil in der Antwort zu behalten. In jedem Fall werden die Implementierungsdetails nicht benötigt, es genügt, auf die Dokumentation zu verweisen, wie ich es in meiner Bearbeitung zu Ihrer Antwort getan habe. –
@DavidHeffernan Eigentlich fand ich die Antwort, als ich die Frage schrieb, und dachte, vielleicht würde es hier schreiben würde jemand anderen ein paar Minuten speichern –