Maison > Article > développement back-end > Comment `delete[]` connaît-il la taille d'un tableau lorsqu'il s'agit de pointeurs ?
Comment delete[] distingue-t-il les tableaux des autres pointeurs ?
En C , l'opérateur delete[] libère la mémoire allouée aux tableaux, mais comment sait-il quand un pointeur est un tableau ?
Compilateur Considérations
Malgré l'incertitude dans le code que vous avez fourni, le compilateur ne peut pas déterminer si un pointeur pointe vers un tableau ou un seul élément.
Informations sur le tableau géré
Les tableaux alloués dynamiquement stockent des informations supplémentaires au-delà du pointeur vers le premier élément. Ces informations incluent le nombre d'éléments dans le tableau.
Opération Supprimer[]
Lorsque delete[] est utilisé sur un pointeur de tableau, il utilise les informations supplémentaires pour :
Syntaxe "Supprimer" alternative
Certains ont remis en question la nécessité d'une syntaxe delete[] distincte puisque les bibliothèques d'exécution gèrent déjà les informations sur la taille du tableau. Cependant, le principe de conception original de C cherchait à minimiser les frais généraux pour les utilisateurs non-matrices en évitant l'allocation d'espace supplémentaire pour les blocs de mémoire non-matrices.
Supprimer[] Spécificité
Par conséquent, delete[] est utilisé pour informer explicitement les bibliothèques d'exécution que la mémoire allouée est un tableau, leur permettant de la désallouer correctement. Bien que cela puisse sembler excessif dans l'informatique moderne, cela peut néanmoins être bénéfique dans les scénarios où l'optimisation de la mémoire est critique.
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!