Freigeben über


delete-Operator (C++)

Gibt einen Speicherblock frei.

[::] delete cast-expression
[::] delete [ ] cast-expression

Hinweise

Das cast-expression-Argument muss ein Zeiger auf einen Speicherblock sein, der vorher einem Objekt zugeordnet wurde, das mit dem new-Operator erstellt wurde. Der delete-Operator weist ein Ergebnis vom Typ void auf und gibt daher keinen Wert zurück. Beispiel:

CDialog* MyDialog = new CDialog;
// use MyDialog
delete MyDialog;

Das Verwenden von delete für einen Zeiger auf ein Objekt, das nicht mit new zugeordnet ist, führt zu unvorhersehbaren Ergebnissen. Sie können delete jedoch für einen Zeiger mit dem Wert 0 (null) verwenden. Diese Bereitstellung bedeutet Folgendes: Wenn new bei einem Fehler 0 (null) zurückgibt, ist das Löschen des Ergebnisses eines new-Vorgangs, bei dem ein Fehler aufgetreten ist, ungefährlich. Weitere Informationen finden Sie unter Die Operatoren new und delete.

Die Operatoren new und delete können außerdem für integrierte Typen, einschließlich Arrays, verwendet werden. Wenn pointer auf ein Array verweist, platzieren Sie leere Klammern vor pointer:

int* set = new int[100];
//use set[]
delete [] set;

Durch das Verwenden des delete-Operators auf einem Objekt wird dessen Speicher freigegeben. Ein Programm, das einen Zeiger dereferenziert, nachdem das Objekt gelöscht wurde, kann zu unvorhersehbaren Ergebnissen führen oder abstürzen.

Wenn delete verwendet wird, um Arbeitsspeicher für ein C++-Klassenobjekt freizugeben, wird der Destruktor des Objekts aufgerufen, bevor der Speicher des Objekts freigegeben wird (wenn das Objekt einen Destruktor aufweist).

Wenn der Operand für den delete-Operator ein änderbarer lvalue ist, ist dessen Wert nicht definiert, nachdem das Objekt gelöscht wird.

Beispiel

Beispiele zur Verwendung von delete finden Sie unter new-Operator.

Siehe auch

Referenz

Ausdrücke mit unären Operatoren

C++-Schlüsselwörter

Funktionsweise von "delete"

Verwenden von "delete"

Operatoren "new" und "delete"

operator delete-Funktion