Integration von Boehm Garbage Collector und C-Standardbibliothek
Um Boehms konservativen Garbage Collector nahtlos in C-Standardbibliothekssammlungen zu integrieren, gibt es zwei Hauptansätze :
Neudefinition des Operators ::new
Dieser Ansatz beinhaltet die Neudefinition des Operators ::new, um Boehms GC zu verwenden. Es kann jedoch zu Konflikten mit vorhandenem C-Code kommen und ist möglicherweise nicht auf verschiedene Compiler portierbar.
Explizites Allokatorargument
Anstatt den Operator ::new neu zu definieren, können Sie Folgendes verwenden: das zweite Vorlagenargument von Standardbibliothekssammlungen, um einen benutzerdefinierten Allokator anzugeben. Dieses Argument steuert, wie Speicher für die internen Datenstrukturen der Sammlung zugewiesen wird.
Beispiel mit std::vector
Der folgende Code zeigt, wie gc_allocator mit std: verwendet wird: Vektor:
#include
#include
std::vector> myVector(10); // Allocate vector with GC-specific allocator
std::string Integration
Für std::string können Sie GC_malloc_atomic verwenden, um das interne Zeichenarray explizit zuzuweisen:
#include
#include
std::string myString((char*)GC_malloc_atomic(10), 10); // Allocate string with GC_malloc_atomic
Hinweis:
Es ist im Allgemeinen nicht ratsam, den Operator ::new neu zu definieren, wenn Boehm GC mit g integriert wird. Verwenden Sie stattdessen lieber den expliziten Allocator-Argument-Ansatz für eine bessere Portabilität und Kompatibilität.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3