Maison > développement back-end > C++ > Comment `delete[]` sait-il combien d'éléments supprimer d'un tableau ?

Comment `delete[]` sait-il combien d'éléments supprimer d'un tableau ?

Susan Sarandon
Libérer: 2024-11-27 19:46:11
original
749 Les gens l'ont consulté

How Does `delete[]` Know How Many Elements to Delete from an Array?

Comment delete[] déchiffre un tableau

Le code en question :

void deleteForMe(int* pointer)
{
     delete[] pointer;
}
Copier après la connexion

a un comportement indéfini si le pointeur ne pointe pas vers un tableau, car il effectue aveuglément une opération delete[]. Cependant, lorsque le pointeur fait référence à un tableau, comme dans :

int main()
{
     int* arr = new int[5];
     deleteForMe(arr);
     return 0;
}
Copier après la connexion

le système d'exploitation sait d'une manière ou d'une autre qu'il doit supprimer uniquement les éléments spécifiés du tableau et ne pas aller au-delà.

La clé de ce comportement réside dans les racines historiques du C en tant que langage compatible C. Pour éviter de surcharger les programmeurs qui n'utilisent pas de tableaux avec une surcharge inutile, la syntaxe delete[] a été introduite.

Lorsqu'une allocation non-tableau est effectuée, telle que :

Foo* foo = new Foo;
Copier après la connexion

aucun supplément des frais généraux sont engagés pour la prise en charge des baies. Toutefois, pour les allocations de tableaux, cette surcharge existe. Pour indiquer que les bibliothèques d'exécution doivent utiliser ces informations, le programmeur doit spécifier delete[] pour les pointeurs de tableau.

Ainsi, le choix entre delete et delete[] est basé sur l'allocation spécifique à supprimer. Cela permet une gestion plus fine de la mémoire et s'aligne sur la philosophie du minimalisme de C.

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