Das habe ja auch schon festgestellt - aber ist dieses Verhalten denn normal?
Auf sicher. Ich erinnere mich an ein Delphi-7-Programm, das mit globalen Variablen arbeitete und einen völlig unmöglichen Fehler produzierte... Drei Tage habe ich gebuddelt, dann fand ich heraus, das eine gobal angelegte TStringList mit Free freigegeben wurde, deren Variable aber nicht auf NIL. Irgendwann belegte der Memorymanager den Bereich neu und das Programm crashte.
Bei lokalen Variablen dieser Art spielt das kaum eine Rolle, bei globalen Variablen würde ich aber immer mit FreeAndNil arbeiten - oder zumindest selbst die Variable auf NIL setzen.