![]() |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen. Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann. Dieses "sich keinen Kopf machen müssen" mit GC halte ich für eine reichlich naive Sichtweise. |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
Aber stimmt ... noch ein Grund, warum der "Probleme" bereiten kann. Und die hatte ich sogar schon lange bevor das hier auftauchte: ![]() |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
|
AW: Fehlertoleranz DELPHI Compiler
Ein GC räumt erst dann Objekte weg, wenn alle Referenzen die auf sie verweisen aus ihrem Scope fallen. Zugriffe auf Referenzen die nicht im Scope liegen, sind schon durch den simplen Syntax-Check abgedeckt.
|
AW: Fehlertoleranz DELPHI Compiler
Zitat:
Ab dann sind Zugriffe auf das Objekt von anderer Stelle aus (Referenzen) darauf grundsätzlich fehlerhaft. Entweder werden a) vor kurzem noch korrekte Daten benutzt, die inzwischen aber im Projektkontext keine Gültigkeit mehr haben b) komplett ungültige Daten benutzt, weil die Speicherstellen inzwischen überschrieben wurden c) knallt es weil Methoden auf Grund eines überschriebenen Speichers nicht mehr ausführbar sind Ein GC sichert ab, dass nur Problem a) entsteht. Aber eine ausreichende Lösung ist das noch nicht. Im Spiel könnte so noch auf das Raumschiff zugeriffen werden, obwohl es eigentlich schon explodiert ist. Jetzt kann man streiten ob das besser ist als eine Exception. |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
![]() Außerdem ist der GC etwas schlauer als das simple RefCounting, was COM Interfaces praktizieren (zirkuläre strong references = memleak). |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
nassem Beton repräsentiert - der in deinen Vorgarten gekippt werden soll. Jetzt willst Du dieses Objekt löschen - und alle Zugriffe auf das Objekt sollen zu Fehlern führen. Mit GC ist das ein Krampf - man muss da quasi händisch das Rad der Access Violation neu erfinden. Meiner Erfahrung nach sind die QS-Werkzeuge auf der Seite des GC einfach wesentlich schlechter. Dass manche Leute gar nicht erst auf die Idee kommen warum man mal Objekte als erledigt markieren will spricht Bände... |
AW: Fehlertoleranz DELPHI Compiler
Zitat:
|
AW: Fehlertoleranz DELPHI Compiler
Klar, man kann ja gerne ein "Erledigt" Flag in seine Klassen einbauen.
Das muß dann aber auch entweder extern überall geprüft werden, oder man prüft es intern und baut in jede Methode, Getter und Setter die Prüfung ein. (früher reichte es mal, wenn das Objekt dA freigegeben wurde, wo man Free aufrief. :stupid: ) |
AW: Fehlertoleranz DELPHI Compiler
Überhaupt habe ich den Eindruck, dass ein GC fast nur dann zu diesen ominösen Problemen führen kann, wenn man einen Speichermanager fälschlicherweise missbraucht um Geschäftslogik zu implementieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz