Condividi tramite


Operatore delete (C++)

Rilascia un blocco di memoria.

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

Note

L'argomento un'espressione di cast deve essere un puntatore a un blocco di memoria allocato in precedenza per un oggetto creato con l'operatore new. L'operatore delete ha un risultato di tipo void e pertanto non restituisce un valore. Ad esempio:

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

L'utilizzo di delete su di un puntatore a un oggetto non allocato con new fornisce risultati non predicibili. È possibile, tuttavia, utilizzare delete su un puntatore con il valore 0. In questo modo, quando new restituisce 0 in caso di errore, eliminare il risultato di un'operazione new non riuscita è innocuo. Per maggiori informazioni vedere Operatori new e delete.

Gli operatori new e delete possono essere utilizzati per i tipi incorporati (built-in types), inclusi gli array. Se pointer fa riferimento ad un array, inserire le parentesi vuote prima di pointer:

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

L'utilizzo dell'operatore delete su un oggetto libera la memoria ad esso associata. Un programma che dereferenzia un puntatore dopo che l'oggetto viene eliminato, può portare a risultati di arresto anomalo o imprevisti.

Quando si utilizza delete per rilasciare la memoria per un oggetto di una classe C++, il distruttore dell'oggetto viene chiamato prima che la memoria allocata per l'oggetto venga liberata (se l'oggetto ha un distruttore).

Se l'operando dell'operatore delete è un l-value modificabile, il suo valore è indefinito dopo che l'oggetto viene eliminato.

Esempio

Per esempi sull'uso di delete, vedere operatore new.

Vedere anche

Riferimenti

Espressioni con operatori unari

Parole chiave C++

Come eliminare lavori

Utilizzo di delete

Operatori new e delete

Funzione operator delete