Intégration du garbage collector de Boehm et de la bibliothèque standard C
Pour intégrer de manière transparente le garbage collector conservateur de Boehm aux collections de bibliothèques standard C, il existe deux approches principales :
Redéfinir l'opérateur ::new
Cette approche implique de redéfinir l'opérateur ::nouveau pour utiliser le GC de Boehm. Cependant, il peut entrer en conflit avec le code C existant et peut ne pas être portable entre différents compilateurs.
Argument d'allocateur explicite
Au lieu de redéfinir l'opérateur ::new, vous pouvez utiliser le deuxième argument de modèle des collections de bibliothèques standard pour spécifier un allocateur personnalisé. Cet argument contrôle la façon dont la mémoire pour les structures de données internes de la collection est allouée.
Exemple avec std::vector
Le code suivant montre comment utiliser gc_allocator avec std:: vecteur :
#include
#include
std::vector> myVector(10); // Allocate vector with GC-specific allocator
std::string Integration
Pour std::string, vous pouvez utiliser GC_malloc_atomic pour allouer explicitement le tableau de caractères interne :
#include
#include
std::string myString((char*)GC_malloc_atomic(10), 10); // Allocate string with GC_malloc_atomic
Remarque :
Il n'est généralement pas conseillé de redéfinir l'opérateur ::new lors de l'intégration de Boehm GC avec g . Préférez plutôt utiliser l’approche d’argument d’allocateur explicite pour une plus grande portabilité et compatibilité.
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