Dispose darf man dann aber auch nur einmal aufrufen?
Per se ja.
Delphi-Quellcode:
procedure Dispose(P);
begin
Finalize(P);
FreeMem(P);
end;
Leider ist hier kein
P := nil;
enthalten, wie beim FreeAndNil,
aber wenn du es selbst danach machst, dann wäre ein Mehrfachaufruf OK.
Delphi-Quellcode:
New(P);
...
Dispose(P);
P := nil;
Und das Finalize selbst.
Ich bin mir nicht sicher, ob es "vollständig" den speicher nullt (hab das Gefühl, für einige Typen wird das nicht gemacht),
aber wenn nicht, dann würde hier ein ZeroMemory/FillChar nach dem Finalize helfen, damit es mehrmals aufgerufen werden kann.
Ein Therapeut entspricht 1024 Gigapeut.