Forum: Object-Pascal / Delphi-Language
Delphi
by OlafSt,
11. Aug 2015
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...
Forum: Object-Pascal / Delphi-Language
Delphi
by OlafSt,
11. Aug 2015
Fast richtig.
Der Speicherbereich wird nur als "frei" markiert. Der Zeiger auf diesen Speicherblock, auf den IDs zeigt, bleibt aber intakt, ebenso wie der Inhalt des Zeigers selbst. Dadurch kann man das ganze Konstrukt noch eine Weile weiterbenutzen - es ist nur fraglich, ob das immer klappt und wie lange das gut geht.
However. Erst ein FreeAndNil setzt den Block auf "frei" und den Zeiger...