Maison > développement back-end > C++ > Quelle est la différence entre `delete` et `delete[]` en C ?

Quelle est la différence entre `delete` et `delete[]` en C ?

Barbara Streisand
Libérer: 2024-12-12 10:54:11
original
284 Les gens l'ont consulté

What's the Difference Between `delete` and `delete[]` in C  ?

Comprendre la distinction entre les opérateurs delete et delete[]

En C, les opérateurs delete et delete[] jouent un rôle crucial dans la gestion de la mémoire . Cependant, il existe une idée fausse répandue concernant leur équivalence. Pour clarifier cela, explorons les différences entre ces opérateurs.

delete_vs_delete[]

L'opérateur delete est spécifiquement utilisé pour désallouer des objets uniques alloués à l'aide de l'opérateur new. Tenter d'utiliser delete sur un tableau est un comportement indéfini et peut entraîner des plantages inattendus du programme.

D'autre part, l'opérateur delete[] est conçu pour libérer les tableaux qui ont été alloués à l'aide de l'opérateur new[]. Utiliser delete[] sur un seul objet est également un comportement indéfini.

Confirmation de la norme

Selon la norme C (5.3.5/2), "In la première alternative (supprimer l'objet), ... Sinon, le comportement n'est pas défini." Cela indique clairement que l'utilisation de delete sur un tableau n'est pas autorisée. De même, "Dans la deuxième alternative (supprimer le tableau),... Sinon, le comportement n'est pas défini." confirme que l'utilisation de delete[] sur un seul objet est également interdite.

Conclusion

Contrairement à la croyance populaire, delete et delete[] ne sont pas des opérateurs équivalents. Une mauvaise utilisation peut conduire à un comportement imprévisible du programme. N'oubliez pas d'utiliser delete pour les objets uniques et delete[] pour les tableaux afin de garantir une bonne gestion de la mémoire et d'éviter un comportement indéfini.

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