Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Automatische Freigabe von Objekten in C++Builder im Vergleich zu Delphi

  Alt 8. Nov 2014, 11:13
Klingt nett. Selbst in Pascal wird es schon schwer und wenn man das hier lieft.

Die Interface-Referenzzählung wird im ARC standardmäßig auf die ARC-Referenzen des internen Objektes umgeleitet. Ich vermute/hoffe einfach mal, daß es im C++ genauso bemacht wurde.
Es gäbe also keinen Unterschieg, ob in einem System mit ARC, eine Referenz auf das Interface oder auf das interne Objekt existiert.




Das Problem beschäftigt mich schon seit paar Jahren immer mal wieder.

Vorallem in Bezug auf Kreuzreferenzen zwischen zwei und vorallem mehreren Objekten.

Parent kennt seine Kinder, die Kinder und Kindeskinder ihre Parents und ohne daß sie sich alle gegenseitig im Speicher halten, wenn alle externen Referenzen freigegeben sind, sollen die Eltern nicht verschwinden, selbst wenn nur noch eine Referenz auf ein Kind existiert.

Weak-Referenzes hätte man auch gleich mal überall einbauen können, wenn man schon dabei ist, selbst wenn es dort noch kein ARC gibt.


Mein Fazit: Es ist nahezu unmöglich einen (größeren) Code zu scheiben, welcher in allen Plattformen problemlos zu verwenden ist, ohne viel Arbeit und ohne das in jedem System einzeln zu testen, anzupassen und wieder alles zu testen.
Und ständig muß man mit irgendwelchen blöden Kompromissen leben. (wenn man nicht überall seinen Produktiv-Code mit tausenden IFDEFs vollpflasteren will)

Die berühmte Abwärtskompatibilität und alles funktioniert in Jahrzehnten immernoch, hat sich damit erledigt.
Für Delphi (vorallem Windows) hab ich mir jetzt Weak-Referenzes selbet gebaut und hoffe die funktionieren überall so, wie ich es mir denke, auch mit ARC und Co.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Nov 2014 um 11:18 Uhr)
  Mit Zitat antworten Zitat