Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: EigenesObjekt.free - klappt nicht so richtig???

  Alt 15. Jul 2004, 13:20
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat