Maison >développement back-end >C++ >Comment `delete[]` connaît-il la taille du tableau qu'il désalloue ?
Comment les allocateurs de mémoire connaissent la taille du tableau pour la suppression[]
En C , l'opérateur delete[] est utilisé pour libérer un tableau de objets de mémoire. Cependant, contrairement à l'opérateur new[], qui requiert explicitement la taille du tableau, delete[] semble fonctionner sans cette information. Comment détermine-t-il la taille du tableau ?
Lorsque vous allouez de la mémoire sur le tas à l'aide de new[], l'allocateur de mémoire alloue un bloc de mémoire contigu pour les éléments du tableau et stocke des informations supplémentaires sur l'allocation, notamment sa taille. Ces informations sont généralement stockées dans un en-tête précédant immédiatement la mémoire allouée.
Standardisation
La méthode de stockage de la taille du tableau avec la mémoire allouée n'est pas standardisée en C lui-même . Différents allocateurs de mémoire implémentent diverses techniques :
Récupération de la taille du tableau
Pendant la suppression, supprimez[] récupère la taille du tableau à partir de l’en-tête ou de l’allocateur de mémoire associé. En connaissant la taille, delete[] peut désallouer efficacement l'ensemble du tableau d'objets.
Conclusion
En résumé, la mémoire allouée par new[] contient des informations sur son taille, soit via des métadonnées de tas, des en-têtes de mémoire ou des valeurs de pointeur. Ces informations sont utilisées par l'opérateur delete[] pour déterminer la taille du tableau lors de la désallocation, permettant une gestion efficace de la mémoire sans avoir besoin de fournir explicitement la taille.
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!