Im Ergebnis ist es gleich.
:=nil ist einfacher und schnell/optimaler, da hier nur freigegeben wird, während SetLength erst noch bissl prüft und dann was macht und auch anderes machen könnte (z.B. wenn nicht 0 reingegeben)
Finalize wird praktisch automatisch im END; gemacht und man verwendet es, z.B. wenn man mit Pointer rumpfuscht.
Beim Finalize (InitializeArray/FinalizeArray und InitializeRecord/FinalizeRecord, was ein Array mit Länge 1 darstellt) muß man auch teilweise aufpassen,
denn je nach Aufruf kann man sich damit alles zerballern ... z.B. mit den Finalize-Funktionen, welche am Ende
nicht den Speicher Nullen
und initialize prüft nicht, ob schon was drin ist (es geht blind davon aus, dass der Speicher neu ist, also noch nie initialisiert oder gar benutzt wurde)
Ein Therapeut entspricht 1024 Gigapeut.