Boehm Garbage Collector mit C-Standardbibliothek verwenden
Bei der Entwicklung von Multithread-C-Anwendungen kann Boehms konservativer Garbage Collector zur Vereinfachung des Speichers nützlich sein Management. Dies wirft die Frage auf, wie Boehm GC mit den Klassen der C-Standardbibliothek wie std::map und std::vector integriert werden kann.
Ein Ansatz besteht darin, den globalen Operator ::new neu zu definieren, um die Implementierung von Boehm zu verwenden. Eine einfachere Lösung besteht jedoch darin, das Allocator-Vorlagenargument explizit in den Standardbibliothekssammlungsvorlagen anzugeben.
Um beispielsweise einen Vektor von Ganzzahlen per GC zuzuweisen, kann man Folgendes verwenden:
std::vector> my_vector;
Das zweite Vorlagenargument in std::vector wird verwendet, um Steuern Sie die Zuordnung der internen Datenstruktur des Vektors, nicht der einzelnen Elemente.
Für std::string ist die Verwendung von Basic_string mit gc_allocator eine Option:
std::basic_string, gc_allocator> my_string;
Alternativ kann man Stellen Sie das Zeichenarray direkt mit GC_malloc_atomic bereit.
Zusammenfassend lässt sich sagen, dass die Verwendung von Boehm GC mit std::vector, std::string und anderen Standardbibliotheksklassen durch Angabe des Vorlagenarguments gc_allocator möglich ist. Eine Neudefinition des Operators ::new ist nicht erforderlich.
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