"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo integrar Boehm Garbage Collector con clases de biblioteca estándar de C++ como `std::vector` y `std::string`?

¿Cómo integrar Boehm Garbage Collector con clases de biblioteca estándar de C++ como `std::vector` y `std::string`?

Publicado el 2024-11-08
Navegar:975

How to Integrate Boehm Garbage Collector with C   Standard Library Classes Like `std::vector` and `std::string`?

Uso del recolector de basura de Boehm con la biblioteca estándar de C

Al desarrollar aplicaciones C multiproceso, el recolector de basura conservador de Boehm puede resultar útil para simplificar la memoria gestión. Esto plantea la cuestión de cómo integrar Boehm GC con las clases de la biblioteca estándar de C como std::map y std::vector.

Un enfoque implica redefinir el operador global ::new para usar la implementación de Boehm. Sin embargo, una solución más sencilla es especificar explícitamente el argumento de la plantilla del asignador en las plantillas de colección de biblioteca estándar.

Por ejemplo, para asignar por GC un vector de números enteros, se puede usar:

std::vector> my_vector;

El segundo argumento de plantilla en std::vector se utiliza para controlar la asignación del estructura de datos interna del vector, no los elementos individuales.

Para std::string, usar Basic_string con gc_allocator es una opción:

std::basic_string, gc_allocator> my_string;

Como alternativa, se puede proporcionar la matriz de caracteres directamente con GC_malloc_atomic.

En resumen, es posible utilizar Boehm GC con std::vector, std::string y otras clases de biblioteca estándar especificando el argumento de plantilla gc_allocator. No es necesario redefinir el operador ::new.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3