Zu dem Sinn und Unsinn von FreeAndNil gibt es dutzende Diskussionen. Einige sagen, man sollte es oft verwenden, andere nie. Und ich glaube beide haben Recht
Kommt definitiv immer auf den konkreten Fall an.
- Geht es um eine Klasseninstanz, die ausschließlich lokal in einer Funktion verwendet (und erstellt) wird, kann man sich das FreeAndNil
fast immer sparen und nur Free
aufrufen, da die Variable nach dem Verlassen der Funktion eh aus dem Scope läuft/vom Stack entfernt wird.
- Bei globalen Instanzen kommt es drauf an, ob die Instanz dynamisch (bei bestimmten Aktionen) erstellt und freigegeben wird (und das Vorhandensein über einen <> nil
Check umgesetzt wird).
FreeAndNil
"nur so" zu verwenden, weil man das Gefühl hat, dann ordentlich aufgeräumt zu haben, ist nur unnötiger Overhead.