![]() |
EigenesObjekt.free - klappt nicht so richtig???
Hallo,
ich möchte die von mir erzeugte Instanz einer Klasse (eigene) gerne freigeben. Ich dachte das geschieht mit meineInstanz.free; Wenn ich im nächsten Schritt allerdings auf Variablen meines "freigegebenen" Objektes zugreife bekomme ich nicht NIL als Rückgabewert, sondern den Wert der entsprechenende Variable. Kann mir jemand sagen, warum das so ist? Kann ich statt meineInstanz.free auch einfach meineInstanz := NIL machen? Vielen Dank im Voraus, Gruß, Diana |
Re: EigenesObjekt.free - klappt nicht so richtig???
Die Kombination auf .free und := NIL führt letzendlich zum Erfolg ;)
Delphi behält freigegebenen Speicher noch etwas, für den Fall dass der in Kürze wieder gebraucht wird. So muss dieser nicht immer neu alloziiert werden -> schneller. Somit sind die Adressen deines Objektes noch gültig, auch wenn du es schon gefreet hast. Setzt du aber gleich noch Objekt := NIL, dann ist sicher gestellt, dass du nicht mehr auf ein eigentlich nicht mehr existierendes Objekt zugreifen kannst. Ab Delphi 6 oder 7 gibts auch die Methode FreeAndNil(TObject). Die macht intern nichts anderes als das was ich grad schrieb ;) sieht nur schicker aus. \\edit: Nur mit Objekt := NIL erzeugst du dir nen Speicherleck. D.h. du hast keinen Verweis mehr auf das Objekt, aber der Speicher wurde auch nicht freigegeben. Somit bleibt der Speicher bis zum Programmende belegt, und du kommst nie wieder dran. Das wäre die schlechteste Lösung. Java hingegen erkennt dass, und gibt den Speicher selbst frei sobald kein Zeiger mehr darauf existiert. Auch .NET arbeitet so (GarbageCollection bzw. Referenzzählung sind die Stichworte, und datt gibbet bei Win32 (mit Ausnahmen) nicht). gruss, dizzy |
Re: EigenesObjekt.free - klappt nicht so richtig???
Kuckst du hier:
![]() Zu beachten sind auch die folge Postings. |
Re: EigenesObjekt.free - klappt nicht so richtig???
Super - vielen Dank für die schnelle und gute Erklärung!
Viele Grüße, Diana |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz