Frage

  

Mögliche Duplizieren:
   Warum löscht nicht den Zeiger auf NULL gesetzt?

Gibt es einen Zweck für einen Zeiger auf deallokierten Speicher?

War es hilfreich?

Lösung

Nein, gibt es keinen wirklichen Gebrauch zu verlassen es auf den ursprünglichen Wert eingestellt, andere als das zeigt, wie unfähig Leute an dem Schreiben von Code sind: -)

Es folgt den Traditionen von C, dass Sie erwartet sind zu wissen, was Sie tun. Die Kosten für den Compiler-Satz befreit Zeiger auf NULL aufweisen, wurden zu hoch in den C Tagen betrachtet und dies hat zu C ++ mit delete übertragen. Wenn Sie Code richtig ist, dann wird der Compiler setzen Sie den Zeiger auf NULL ist eine Verschwendung, da Sie entweder es um etwas gesetzt werden sonst nicht oder verwenden Sie es erneut.

Wenn Sie wirklich wollen Ihren Code sicherer machen, werden Sie so etwas wie (in C) tun:

void myFree (void **pMem) {
    free (**pMem);
    *pMem = NULL;
}
myFree (&x);

statt nur:

free (x);

Aber, wenn Sie auf dieses Niveau zu gehen, gehst (und die Einführung eines solchen Greuel), nur um zu Java wechseln und mit ihm getan werden, dann müssen Sie nicht Sorge, sich mit manueller Speicherverwaltung überhaupt.

Andere Tipps

C ++ ist genau das, was Sie sagen, es zu tun. Sie haben den Zeiger auf null nicht gesetzt ist, Sie löschte den Speicher, dass der Zeiger auf zeigt.

Warum würden Sie den zusätzlichen Schritt Verschwenden davon null Einstellung (aus Performance-Gründen), wenn Sie nicht zu haben brauchen?

Was ist, wenn es ein const Zeiger?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top