Thema: Delphi Frage zu TThread.Free

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

Re: Frage zu TThread.Free

  Alt 31. Okt 2009, 10:47
.Free gibt nur das Objekt frei, aber verändert nicht den "Pointer" dieser Zeigt immernoch dahin, wo früher mal das Objekt lag.

Es kommt jetzt drauf an
- entweder du läßt die Variable Capture so, wie sie ist
- oder du setzt es auf nil

PS: dafür gibt es auch die Funktion FreeAndNil
> FreeAndNil(Capture) statt Capture.Free;


Wenn du z.B. später mal abfragen willst, ob da ein Objekt existiert ,
if Assigned(Capture) then dann mußt du es auf nil sezten.
Ansonsten isses eigentlich egal.


Und ob das Objekt (dessen Daten noch angezeigt wird), das hängt teilweise auch vom Speichermanager ab.

Der reserviert bei Windows den Speicher in größeren Blöcken und vergibt ihn in kleineren weiter.
Heißt also, daß dieser Speicher immernoch bei Windows reserviert ist, aber im DelphiMM als "frei" für die weitere Verwendung markiert wurde ... solange bis es überschieben/weitergegeben wird oder auch alles Andere in diesem Block freigegeben wurde und der DelphiMM ihn wieder an Windows zurückgibt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat