"array of" und string werden ausschliesslich auf dem Heap alloziiert.
Delphi implementiert daher ein heimliches try finally, um die lokalen Variablen zu initialisieren und finalisieren.
Delphi-Quellcode:
var
Bla: array of Integer;
begin
try
Bla := nil; // das sind Null Elemente
....
// Userteil der Funktion
finally
SetLength(Bla, 0); // das dealloziiert die Variable und setzt auf Null Elemente = nil
end;
end;
Bei globalen Variablen legt Delphi zusaetzliche initialization und finalization Sections an, um das zu erledigen.
Man sollte daher globale, getypte und initialisierte Konstanten-Arrays mit Strings vermeiden. Meist genuegt es PChar zu verwenden.
Delphi spart sich dann die Sections und wandelt die PChars erst in Strings um wenn man sie benutzt.