next up previous contents
Next: Divers ... Up: Allocation Previous: new

delete

L'opérateur delete détruit un objet créé par un new. On ne peut détruire un pointeur sur constante. Il a une syntaxe particulière pour la destruction des tableaux.

void f(){
  int *pi=new int;
  int i;
  delete pi; //libere l'allocation
  pi=&i;
  delete pi; // non!!!
  pi=new int[16];
  delete pi;     // dangereux
  delete [] pi;  //ok les 16 emplacements sont libérés
}
De même que pour le new, le delete appelle l'opérateur delete(). Dans le cas d'un objet d'une classe T ayant un T::operator delete() c'est cet opérateur qui sera appelé, sinon l'opérateur global. Il faut obligatoirement libérer l'espace alloué par un new T [] par un delete []. En fait ce ne sont pas les mêmes opérateurs qui sont appelés dans les deux cas (cf. chapitre sur les classes).

Contrairement au new, l'opérateur delete ne peut être surchargé.



Mon Oct 20 14:02:48 MET 1997