"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment intégrer le Garbage Collector Boehm avec les classes de la bibliothèque standard C++ comme « std :: vector » et « std :: string » ?

Comment intégrer le Garbage Collector Boehm avec les classes de la bibliothèque standard C++ comme « std :: vector » et « std :: string » ?

Publié le 2024-11-08
Parcourir:216

How to Integrate Boehm Garbage Collector with C   Standard Library Classes Like `std::vector` and `std::string`?

Utilisation du garbage collector de Boehm avec la bibliothèque standard C

Lors du développement d'applications C multithread, le garbage collector conservateur de Boehm peut être utile pour simplifier la mémoire gestion. Cela soulève la question de savoir comment intégrer Boehm GC aux classes de la bibliothèque standard C comme std::map et std::vector.

Une approche consiste à redéfinir l'opérateur global ::new pour utiliser l'implémentation de Boehm. Cependant, une solution plus simple consiste à spécifier explicitement l'argument du modèle d'allocateur dans les modèles de collection de bibliothèque standard.

Par exemple, pour allouer par GC un vecteur d'entiers, on peut utiliser :

std::vector> my_vector;

Le deuxième argument de modèle dans std::vector est utilisé pour contrôler l'allocation du la structure de données interne du vecteur, pas les éléments individuels. , gc_allocator> my_string;

Alternativement, on peut fournir le tableau de caractères directement avec GC_malloc_atomic.

En résumé, l'utilisation de Boehm GC avec std::vector, std::string et d'autres classes de bibliothèque standard est possible en spécifiant l'argument de modèle gc_allocator. La redéfinition de l'opérateur ::new n'est pas nécessaire.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3