Integration der konservativen Garbage Collection mit der C-Standardbibliothek
Frage:
In einem Multi -threaded C-Anwendung, kann Boehms konservativer Garbage Collector (GC) effektiv in Verbindung mit der C-Standardbibliothek genutzt werden? Wie sollen insbesondere der Operator ::new und die von std::vector und std::string bereitgestellten Allokatoren gehandhabt werden?
Antwort:
1. Eine Neudefinition des Operators ::new:
Eine Neudefinition von ::operator new mit Boehms GC ist nicht erforderlich. Durch die ordnungsgemäße Verwendung von Boehms GC ist es möglich, eine explizite Neudefinition von ::operator new zu vermeiden.
2. Allokatoren für Standardbibliothekscontainer:
std::vector:
std::string:
Beispiel:
Der folgende Code zeigt eine benutzerdefinierte Implementierung eines GC-zugewiesenen Vektors:
<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. Kompatibilität mit g:
Ja, es ist möglich, Boehm GC mit einer von g kompilierten Anwendung zu verwenden. Befolgen Sie die oben genannten Richtlinien, um GC effektiv in die Standardbibliothek zu integrieren.
Nachtrag (Januar 2017):
Das obige ist der detaillierte Inhalt vonKann Boehms konservativer Garbage Collector in die C-Standardbibliothek für Multithread-Anwendungen integriert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!