Maison  >  Article  >  développement back-end  >  Décrivez brièvement quelle est la fonction de l'allocateur ?

Décrivez brièvement quelle est la fonction de l'allocateur ?

青灯夜游
青灯夜游original
2020-07-15 14:58:346705parcourir

L'allocateur est une partie importante de la bibliothèque standard C++. Sa fonction est de gérer l'allocation de mémoire et les demandes de libération du conteneur. En d’autres termes, l’allocateur est utilisé pour encapsuler les détails de bas niveau de la gestion de la mémoire des conteneurs STL.

Décrivez brièvement quelle est la fonction de l'allocateur ?

Le rôle de l'allocateur

En programmation C++, l'allocateur (anglais : allocator) est la bibliothèque standard C++ élément important.

La bibliothèque C++ définit une variété de structures de données (telles que des listes chaînées, des ensembles, etc.) collectivement appelées « conteneurs ». L'une des caractéristiques communes de ces conteneurs est que leur taille peut être modifiée pendant l'exécution du programme. est en cours d'exécution ; Pour y parvenir, une allocation dynamique de mémoire est particulièrement nécessaire, où l'allocateur est utilisé pour gérer l'allocation de mémoire et les demandes de libération du conteneur.

En d'autres termes, l'allocateur est utilisé pour encapsuler les détails de bas niveau de la gestion de la mémoire des conteneurs STL.

Par défaut, la bibliothèque standard C++ utilise son propre allocateur universel, mais selon des besoins spécifiques, les programmeurs peuvent également personnaliser leur propre allocateur pour le remplacer.

L'allocateur a été inventé pour la première fois par Alexander Stepanov dans le cadre de la bibliothèque de modèles standard C++ (STL). Son intention initiale était de créer une méthode qui « rend la bibliothèque plus flexible et indépendante » basée sur le modèle de données sous-jacent. " et permet aux programmeurs d'utiliser des pointeurs personnalisés et des types de référence dans la bibliothèque ;

Mais lorsque la bibliothèque de modèles standard a été incorporée à la norme C++, le comité des normes C++ s'est rendu compte que le modèle de données était complètement en guise de compromis, le Les restrictions d'allocation dans la norme sont devenues plus strictes, ce qui entraîne des pertes de performances inacceptables dues à l'abstraction. Pour cette raison, la norme existante a beaucoup moins d'exigences que ce que Stepanov avait initialement envisagé. Les distributeurs décrits sont considérablement limités dans leur degré de personnalisation.

Bien que la personnalisation des allocateurs soit limitée, dans de nombreux cas, des allocateurs personnalisés sont toujours nécessaires, et il s'agit généralement d'encapsuler différents types d'espaces mémoire (tels que la mémoire partagée et la mémoire récupérée) méthode d'accès, ou). pour améliorer les performances lors de l'utilisation d'un pool de mémoire pour l'allocation de mémoire. De plus, du point de vue de l'utilisation de la mémoire et de la durée d'exécution, les programmes qui allouent fréquemment de petites quantités de mémoire bénéficieront grandement de l'introduction d'un allocateur spécialement personnalisé.

Tutoriel recommandé : "Tutoriel vidéo 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!

Déclaration:
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