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.