Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
2. Feb 2021
Das volle FastMM kann bei Speicherfreigabe den Speicher überschreiben (mit einem Muster markieren)
so würde z.B. eine Doppelfreigabe oder ein Zugriff nach der Freigabe auffallen.
-> Man müsste nur noch das entgültige Freigeben ein bissl verzögern, damit auch freigegebener und inzwischen wiederverwendeter Speicher in diese Prüfung fallen.
Gegen sowas wie Buffer-Overrun oder komplett...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
29. Jan 2021
FreeAndNil kopiert nur den Objektzeiger
und setzt vor dem Free die originale Variable auf NIL. (erspart sich so ein TryFinally)
Temp := VAR; // mit ARC sind einfach die Zeilen 1 und 3 nutzlos und werden weggelassen
VAR := nil;
Temp.Free;
// statt
try
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
29. Jan 2021
Ob Free oder FreeAndNil macht keinen Unterschied, denn FreeAndNil ruft auch nur Free auf.
Außer dass FreeAndNil eigentlich NilAndFree heißen müsste, da es zuerst die Variable auf NIL setzt und danach Free aufruft.
Das Einzige, wo FreeAndNil anders arbeiten könnte, als wie Free, das wäre im Nextgen, wo dabei auch noch die Referenzzählung mitspielen würde,
wobei dort Free ja eigentlich...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
26. Jan 2021
Die Delphi-Klassen werden vor Create erzeugt.
Stell dir einfach vor das Erstellen passiert im ersten BEGIN jedes CREATE, wenn die Klasse zu dem Zeitpunkt noch nicht initialisiert wurde, dann wird NewInstance ausgeführt.
Das Selbe ist übrigens auch beim Destructor, wo quasi im END die Klasse gelöscht wird.
Im Constructor/Destructor werden dann nur noch Dinge innerhalb der Klasse geregelt, wie...