Allocateurs (C++)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Alexander Stepanov, inventeur des allocateurs

En programmation C++, les allocateurs (anglais : allocators) sont un composant important de la bibliothèque standard de C++ (STL). La bibliothèque standard fournit plusieurs structures de données, telles que les listes et les ensembles, communément appelées conteneurs. Un point commun parmi ces conteneurs est leur capacité à changer de taille pendant l'exécution du programme. Pour ce faire, des techniques d'allocation dynamique de la mémoire sont généralement employées. Les allocateurs gèrent toutes les demandes d'allocation et de désallocation de la mémoire pour un conteneur donné. La bibliothèque standard de C++ fournit des allocateurs génériques utilisés par défaut, cependant, des allocateurs personnalisés peuvent également être écrits par le développeur.

Les allocateurs ont été inventés par Alexander Stepanov lors de la création de la Standard Template Library (STL). Ils ont été initialement conçus comme un moyen de rendre la bibliothèque STL plus flexible et indépendante au modèle mémoire C sous-jacent, permettant aux développeurs d'utiliser des pointeurs et des types de références personnalisés avec la bibliothèque. Cependant, dans le processus d'adoption de la STL dans le standard C++, le comité de standardisation a réalisé qu'une abstraction complète du modèle mémoire aurait eu des répercussions inacceptables sur les performances. Pour remédier à cela, les exigences ont été rendues plus restrictives. En conséquence, le niveau de personnalisation fourni par les allocateurs est plus limité que ce qui était prévu à l'origine par Stepanov.

Néanmoins, il existe plusieurs scénarios où les allocateurs personnalisés sont désirables. Parmi les raisons les plus courantes pour écrire des allocateurs personnalisés figurent : l'amélioration des performances d'allocation en utilisant des zones mémoire, et l'encapsulation de l'accès à différent types de mémoires, comme la mémoire partagée ou la mémoire du ramasse-miettes. En particulier, les programmes avec de nombreuses et fréquentes allocations de petites quantités de mémoire peuvent bénéficier grandement d'allocateurs spécialisés, tant en termes de temps d'exécution que d'empreinte mémoire.

Références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]