Hallo,
Ich programmiere gerade einen Sudoku-Solver mittels Dancing Links. Dabei erzeuge ich ein selbstgeschriebenes "Node"-Objekt und füge es jeweils in eine horizontale und vertikale DoublyLinked-List. Nun möchte ich das Objekt so löschen, dass es aus beiden Listen verschwindet. Leider funktioniert das mit dem del keyword nicht.
sprich:
y = Node()
x = y
del y
löscht leider nicht das Objekt, sondern nur die Referenz. Ich habe keine Ahnung wie ich das in Python löse. Komme aus der C++-Ecke.
Vielen Dank für eure Hilfe!!!
Objekte richtig löschen nicht nur Referenz
Du musst dafür sorgen, dass keine Referenzen (Python: Namen, entfernt vergleichbar mit std::shared_ptr) mehr auf das Objekt verweisen. Dann kann es vom GC abgeräumt werden.
Deine Listen enthalten auch nicht die Objekte selbst, sondern lediglich Verweise. Entferne (remove)beide und Dein Objekt wird irgendwann den Aufstieg ins Datennirvana schaffen.
Deine Listen enthalten auch nicht die Objekte selbst, sondern lediglich Verweise. Entferne (remove)beide und Dein Objekt wird irgendwann den Aufstieg ins Datennirvana schaffen.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Hallo DKKA,
Python verhält sich auch nicht anders als C++ in diesem Punkt. Solange noch Pointer in C++ auf das gelöschte Objekt zeigen kann man noch darauf zugreifen, es besteht nur die Gefahr, dass dieser Speicherbereich irgendwann überschrieben wird. Anders ausgedrückt: Wenn Du in C++ ein Objekt freigibst, auf das noch Referenzen zeigen, hast Du ein großes Problem, in Python nur Speicher belegt.
Python verhält sich auch nicht anders als C++ in diesem Punkt. Solange noch Pointer in C++ auf das gelöschte Objekt zeigen kann man noch darauf zugreifen, es besteht nur die Gefahr, dass dieser Speicherbereich irgendwann überschrieben wird. Anders ausgedrückt: Wenn Du in C++ ein Objekt freigibst, auf das noch Referenzen zeigen, hast Du ein großes Problem, in Python nur Speicher belegt.