Je sais que delete
L'utilisation d'un pointeur nul n'est pas possible :
Dans les deux cas, si la valeur de l'opérande de delete est le pointeur nul, l'opération n'a aucun effet.
(norme C++ <code>5.3.5 [expr.delete] p2</code> )
Et aussi que la suppression d'un void*
est un comportement indéfini car le destructeur ne peut pas être appelé puisqu'il n'y a pas d'objets de type void
:
Dans la première alternative (
delete object
), la valeur de l'opérande de suppression sera un pointeur vers un objet autre qu'un tableau ou un pointeur vers un sous-objet représentant une classe de base d'un tel objet. Sinon, le comportement est indéfini.
(norme C++ <code>5.3.5 [expr.delete] p2</code> )
Normalement, je considère que les choses qui sont énumérées en premier l'emportent sur celles qui sont énumérées plus loin, mais qu'en est-il de la nullité ? void*
comme les suivantes ?
void* p = 0;
delete p; // UB or well-defined?