delete |
Supprimer |
Visual C++ .NET |
Syntaxe
[::] delete cast-expression
|
[::] delete [] cast-expression
|
Paramètres
Nom |
Description |
cast-expression |
Ce paramètre permet d'indiquer un pointeur vers un bloc de mémoire précédemment alloué pour un objet créé avec l'opérateur new. |
Description
Ce mot réservé permet de désallouer un bloc de mémoire.
Remarques
- L'opérateur delete a un résultat de type void et ne renvoie donc pas de valeur.
- L'utilisation de delete sur un pointeur vers un objet non alloué avec new donne des résultats imprévisibles. Vous pouvez cependant
utiliser delete sur un pointeur de valeur 0. Cette disposition signifie que, lorsque new renvoie 0 en cas d'échec, la suppression du
résultat d'une nouvelle opération ayant échoué est inoffensive.
- Les opérateurs new et delete peuvent également être utilisés pour les types intégrés, y compris les tableaux. Si le pointeur fait
référence à un tableau, placez des crochets vides ([]) avant le pointeur :
- int* ensemble = new int[1000];
- //utilise ensemble[]
- delete [] ensemble;
- L'utilisation de l'opérateur delete sur un objet libère sa mémoire. Un programme déréférençant un pointeur après la suppression de l'objet peut
avoir des résultats imprévisibles ou se bloquer.
- Lorsque delete est utilisé pour libérer de la mémoire pour un objet de classe C++, le destructeur de l'objet est appelé avant que la mémoire de l'objet
ne soit libérée (si l'objet a un destructeur).
- Si l'opérande de l'opérateur de suppression est une l-valeur modifiable, sa valeur n'est pas définie après la suppression de l'objet.
- Si l'option de compilateur /sdl (Activer les contrôles de sécurité supplémentaires) est spécifiée, l'opérande de l'opérateur de suppression est
défini sur une valeur non valide après la suppression de l'objet.
- L'opérateur delete appelle l'opérateur de fonction delete. Pour les objets n'étant pas de type classe (class,
struct ou union), l'opérateur de suppression global est appelé. Pour les objets de type classe, le nom de la
fonction de désallocation est résolu dans la portée globale si l'expression de suppression commence par l'opérateur de résolution de portée unaire (::). Sinon, l'opérateur
delete appelle le destructeur pour un objet avant de désallouer la mémoire (si le pointeur n'est pas nul). L'opérateur de suppression peut être défini classe par
classe ; s'il n'existe pas une telle définition pour une classe donnée, l'opérateur global delete est appelé. Si l'expression delete est utilisée pour
désallouer un objet de classe dont le type statique a un destructeur virtuel, la fonction de désallocation est résolue via le destructeur virtuel du type dynamique de
l'objet.
Dernière mise à jour : Lundi, le 25 Octobre 2021