Per deallocare la memoria dell'area heap in C++ mette a disposizione l'operatore delete. Questo operatore non restituisce alcun valore e quindi deve essere usato da solo in un'istruzione.
Il prototipo dell'operatore delete si presenta in questo modo:
delete nome_puntatore
Contrariamente a quanto sembra l'operatore delete non cancella la variabile nome_puntatore, né altera il suo contenuto: l'unico effetto è di liberare la memoria puntata rendendola disponibile per ulteriori allocazioni (se l'operando non punta a un'area heap alcuni compilatori generano errore, altri no, ma in ogni caso l'operatore delete non ha effetto).
Se l'operando punta a un'area in cui sono stati allocati più oggetti, delete va specificato con una coppia di parentesi quadre (senza la dimensione, che il C++ è in grado di riconoscere automaticamente). Ad esempio:
float* punt = new float [100] ; // alloca 100 oggetti float
delete [] punt; // libera tutta la memoria allocata
L'operatore delete costituisce l'unico mezzo per deallocare memoria heap, che, altrimenti, sopravvive fino alla fine del programma, anche quando non é più raggiungibile. Ad esempio:
int* punt = new int; // alloca un int nell'area heap
int a;
punt = &a; /*assegna a punt un indirizzo dell'area stack, per cui l'oggetto int dell'area heap non è più raggiungibile e deallocabile*/