What? Nein. Muss hier doch etwas weiter ausholen
Aber eines noch vorweg: Eine Frage, ein Thread. Denn diese Frage hat an sich nichts mehr mit dem vorher gefragten Thema zu tun.
Delphi-Quellcode:
type
TMensch = class(TObject)
{ Eigenschaften und Methoden (public/private) }
end;
var
Person : TMensch;
begin
Person := TMensch.Create();
try
Person.Name := 'Matze';
Person.Alter := 18;
Person.FahreNachMuenchen();
finally
FreeAndNil(Person);
end;
end;
So, nun zu dem Code. Das was ich oben geschrieben habe, weißt du hoffentlich nocht, also was eine Klasse und was eine Instanz der Klasse ist. Nun ist es so, dass wenn du eine Instanz erzeugst (Aufruf des Konstruktors Create), dann wird das Objekt im Speicher (
RAM) angelegt. Die Verwaltung im Speicher wird ja via Adressen gehandelt. In der Variable Person wird quasi die Adresse des erzeugten Objekts gespeichert, sodass du Zugriff drauf hast. Aber was ist eigentlich *vor* dem Create-Aufruf? Da zeigt Person auf nil, d.h. auf "nichts" -- in anderen Sprachen heißt das Ding NULL. Bei FreeAndNil wird das Objekt welcher sich hinter der, in der Variable Person gespeicherten Adresse verbirgt, freigegeben, d.h. der Speicher wird frei. Gleichzeitig zeigt nun Person auf nil, d.h. auf einen fest definierten Wert, der angibt, dass Person eben auf keine Instanz zeigt.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)