Warum wird ein pointer nicht genullt wenn man das zugehörige Objekt löscht?
-
Ich denke, automatisch genullte Zeiger sind sogar noch um ein paar Größenordnungen einfacher als Garbage Collection... Man braucht nur ne Basisklasse, die Platz für alle Referenzen hat und die im Destruktor auf null setzt, sowie einen Zeiger, der beim Anzeigern und Wegzeigern sich selbst hinzufügt oder löscht. Das Ganze kann man sehr performant implementieren. Bei Interesse kann ich meinen Code gerne mal posten.
-
Ich denke, dass automatisches nullen nach deleten nicht mit automatischer Garbage Collection vergleichbar ist...
Ganz prinzipiell sind das völlig komplett unterschiedliche Ansätze.Was aber am automatischem nullen leichter als an GC sein soll, entzieht sich allerdings meiner Kenntnis. Wenn wir uns jetzt nur auf Speichermanagement beziehen kann es gar nicht leichter gehen als mit nem GC.
Dein automatisches nullen kann solche wunderbaren fehler wie auf ein bereits deallokiertes Objekt zugreifen nicht verhindern. Du hast in jedem Fall undefiniertes Verhalten, ob du jetzt einen nicht-null Zeiger hast und auf ein deallokiertes Objekt zugreifst, oder ob du jetzt einen null-zeiger dereferenzierst. Bei null hast du wenigstens den Vorteil, dass er dir auf einem handelsüblichen Betriebssystem ne acces violation aufdrückt, aber den Fehler hat es nicht verhindert.Der Trick beim GC ist ja, dass du den Fehler nicht machen kannst, etwas zu deallokieren was du noch brauchst. Also nicht wirklich vergleichbar... (ohne damit eine Wertung abgeben zu wollen)
-
Besten Dank Leute, dass hat geholfen