Destruktor
-
Hab folgenden Destruktor aus einem Buch. Kann es sein das dort folgende Zeile vergessen wurde? Ist es bei Arrays auf dem Heap nicht nötig den Zeiger auf dieses Array nach dem freigeben des Speichers auf 0 bzw. null zu setzen.
arr = 0; // dürfte ich auch schreiben arr = null;DynamicDemo::~DynamicDemo(void) // was soll das void kann ich das weglassen? { // wenn ich es in der Deklaration auch entf. delete[] arr; }
-
Nicht nötig, aber sinnvoll wenn man überprüfen will ob der Zeiger auf ein gültiges objekt zeigt. Nach dem destruktor wird der Zeiger nicht mehr benutzt also kann das entfallen.
-
nein es ist nicht noetig - allerdigs bei den meisten anderen zeigern welche sich nicht im destruktor befinden angebracht um die gefahr eines ungeplanten zugriffes zu verringern. diese gefahr des zugriffes bei einem objekt nach seiner zerstoerung ist nicht gegeben.
Malcolm_X schrieb:
// dürfte ich auch schreiben arr = null;wenn du vorher eine konstante const int null=0; definiert hast :p.
du meintest bestimmt NULL. ja darfst du -ist aber auch blos ein makro welches am ende 0 ergibt.
-
Mit
arr = NULLgibt er doch den Speicher nicht wieder frei, oder?
-
CSpille schrieb:
Mit
arr = NULLgibt er doch den Speicher nicht wieder frei, oder?
nein, mit delete wenn er mit new erstellt wurde