Maison >développement back-end >C++ >Le garbage collector conservateur de Boehm peut-il être intégré à la bibliothèque standard C pour les applications multithread ?
Intégration du garbage collection conservateur avec la bibliothèque standard C
Question :
Dans un environnement multi -threaded C, le garbage collector (GC) conservateur de Boehm peut-il être utilisé efficacement en conjonction avec la bibliothèque standard C ? Plus précisément, comment l'opérateur ::new et les allocateurs fournis par std::vector et std::string doivent-ils être gérés ?
Réponse :
1. Redéfinir l'opérateur ::new:
Redéfinir ::operator new avec le GC de Boehm n'est pas nécessaire. En utilisant correctement le GC de Boehm, il est possible d'éviter de redéfinir explicitement ::operator new.
2. Allocateurs pour les conteneurs de bibliothèque standard :
std::vector:
std::string:
Exemple :
Le code suivant démontre une implémentation personnalisée d'un vecteur alloué par GC :
<code class="cpp">#include <gc/gc_cpp.h> #include <gc/gc_allocator.h> #include <vector> class Myvec { std::vector<int, gc_allocator<int>> _vec; public: Myvec(size_t sz = 0) : _vec(sz) {} // ... (rest of class implementation) };</code>
3. Compatibilité avec g :
Oui, il est possible d'utiliser Boehm GC avec une application compilée par g . Suivez les directives ci-dessus pour intégrer efficacement GC à la bibliothèque standard.
Addendum (janvier 2017) :
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!