mögliche Dubletten:
C++: Delete this?
Object-Oriented Suicide or delete this; Konnte ein Objekt seinen Speicher freigeben?
Ich lerne C++ durch das sehr gute Buch C++ Primer zu lesen und ich lerne, wie C++ Speicherfreigabe Speicher durch die delete
Schlüsselwörter wie C macht mit free
. Java und Pascal haben diesen Mechanismus nicht, um Speicher frei zu befreien. Es könnte zu Fehlern in Programmen führen, wenn sie lange laufen und Variablen zerstört werden, die benötigt werden, damit sie nicht trivialisiert werden. Kurz
In ich frage mich, ob es in C rechtliche oder advicable zum Beispiel ist ++ für eine Variable this.delete()
zu tun und selbst löschen. Wir hören meistens über das Freigeben von Zeigern in C und C++ und dies geschieht mit den neuen Schlüsselwörtern free
und delete
. Pascal hat auch Zeiger, aber Java nicht. Also in Java sollte es nicht möglich sein, da Sie nicht explizit Objekte löschen, C hat keine Objekte, so konnte struct
nicht den Speicher zugewiesen werden, selbst wenn es technisch möglich war, da C keine Objekte hat und Pascal auch nicht .
Also ich lasse C++ für meine Frage, ob es für ein Objekt legal ist, sich selbst mit etwas wie this.delete()
zu löschen?
Doin g so ist möglich - 'delete this;' ist in C++ absolut gültige Syntax und sollte "richtig" kompilieren und ausführen. Es wird jedoch davon ausgegangen, dass "* this" im Heap zugeordnet ist, was nicht unbedingt so ist. Außerdem riskiert es eine weitere Speicherkorruption, da der zuvor von '* this' belegte Raum nach der Freigabe wieder von späteren Speicherzuweisungen verwendet werden kann. Schlechte Idee. Renn weg! Renn weg! –