Maison > développement back-end > C++ > La suppression d'un pointeur vide en C est-elle sûre ?

La suppression d'un pointeur vide en C est-elle sûre ?

Linda Hamilton
Libérer: 2024-12-16 21:19:15
original
886 Les gens l'ont consulté

Is Deleting a Void Pointer in C   Safe?

Pièges liés à la suppression d'un pointeur vide

Imaginez l'extrait de code suivant :

void* my_alloc(size_t size)
{
    return new char[size];
}

void my_free(void* ptr)
{
    delete[] ptr;
}
Copier après la connexion

Est-il sécuritaire de supprimer le pointeur vide, ptr, dans ce manière ?

Réponse :

Selon la norme C, il s'agit d'une pratique dangereuse. La section 5.3.5/3 se lit comme suit :

"Dans la première alternative (supprimer l'objet), si le type statique de l'opérande est différent de son type dynamique, le type statique doit être une classe de base de l'opérande. Le type dynamique de l'opérande et le type statique doivent avoir un destructeur virtuel ou le comportement est indéfini. Dans la deuxième alternative (supprimer un tableau), si le type dynamique de l'objet à supprimer diffère de son type statique, le comportement est. undefined."

La note de bas de page qui suit ce passage souligne en outre :

"Cela implique qu'un objet ne peut pas être supprimé à l'aide d'un pointeur de type void* car il n'y a pas d'objets de type void."

Par conséquent, la suppression via un pointeur vide est strictement interdite car elle peut entraîner un comportement imprévisible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal