Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Richtig/sauber freigeben - nur wie?

  Alt 7. Okt 2009, 14:19
Zitat von sirius:
Verwirrung pur
...
praktisch, wie sirius in Kurz grad sagte

Daß es nun darauf ankommt, ob es für diese Daten eine entsprechende Automatik gibt.

Strings und dynamische Arrays werden von der CompilerMagic behandelt.
bei Interfaces ist es ähnlich

Auch wenn du Records via New/Dispose erstellst/löschst
oder selber Speicher z.B. via GetMem/FreeMem/Initialize/Finalize verwaltets
greift die CompilerMagic ein.

Diese CompilerMagic behandelt auch alle Variablen, welche in Funktions-Parametern, als lokale/globale Variablen, in Arrays oder als Class-/Instanzvariablen in Objekten drin stecken

Dann gibt es eben noch Objekte, welche beim Dispose/Free eine in ihnen angelegte Liste selber bereinigen.


So, nun Interger, Sets, Enums, Chars ... liegen halt direkt im Record und da sie keinen eigenen Speicher besitzen werden sie praktisch mit dem Record entfernt/erstellt.

Alles was jetzt außerhalb des Records liegt und im Record nur einen Zeiger hat
muß nun irgendwie extra behandelt (gelöscht) werden.

Da nun das Array ja von der CompilerMagic freigegeben wird, kümmert sich diese auch im die enthaltenen Records und gibt auch dort "alles" frei, welches ebenso von ihr behandelt wird.

- Integer/Enum/Set/ShortString ligt mit drin und braucht nicht extra behandelt zu werden
- bei den String, DynArray und Interface macht dieses halt die CompilerMagic, wenn der Record-Speicher Ordnunggemäß freigegeben wird (man kann es aber auch selber machen)
- bei Objekten mußt du es mit .Free selber machen (es sei den, das Objekt liegt in einem anderen Objekt, welches seine Liste selber bereinigt)
- bei allen anderen Pointern mußt du es eh selber machen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat