Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.delphi.misc > #19226
| From | Jens Kallup <kallup.jens@web.de> |
|---|---|
| Newsgroups | de.comp.lang.delphi.misc |
| Subject | Free und FreeAndNil |
| Date | 2022-04-12 11:13 +0200 |
| Organization | kallup.net - non-profit |
| Message-ID | <jbku65Fij5tU1@mid.individual.net> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
Hallo,
in älteren Versionen von Delphi hatte ich immer im dtor
Free benutzt, um ein Objekt bzw. die Referenz darauf zu
löschen bzw. den belegten Speicher durch das OS wieder
freizugeben.
Allerdings kommen nun neuere Versionen (so ab Version 5)
mit der Funktion FreeAndNil daher.
Was ist an dieser Funktion anders als an Free ?
In älteren Quellcodes hatte ich fast nie folgende zwei-
liner verwendet:
obj.Free;
obj := nil;
Ich nehme mal an das FreeAndNil das gleiche macht.
Alllerdings würde es mich mal interessieren, ob man denn
in den älteren Versionen tatsächlich von "obj := nil;"
abhängig war ?
Weil, in neueren Version (ich verwende gerade Delphi 7)
es dazu führen kann, das man zwar den Speicher mit .Free
freigibt, aber der Zeiger auf das Objekt zeigt oder gar
manchmal auf eine andere Adresse im Speicher, wie ich das
so auch schon feststellen konnte.
Erst durch die Verwendung von FreeAndNil kann ich sicher
sein, das ich mit:
if obj = nil then obj := TObj.Create;
a) abfragen kann, das "obj" tatsächlich "null" ist, um
im Anschluß dann
b) das "obj" mit Create neu erstellen kann, sofern es dann
gebraucht wird.
Mit freundlichen Grüßen
Jens Kallup
Back to de.comp.lang.delphi.misc | Previous | Next — Next in thread | Find similar
Free und FreeAndNil Jens Kallup <kallup.jens@web.de> - 2022-04-12 11:13 +0200 Re: Free und FreeAndNil Holger Schieferdecker <spamless@gmx.de> - 2022-04-13 09:04 +0200
csiph-web