Integración del recolector de basura de Boehm y la biblioteca estándar de C
Para integrar perfectamente el recolector de basura conservador de Boehm con las colecciones de la biblioteca estándar de C, existen dos enfoques principales :
Redefinición del operador ::new
Este enfoque implica redefinir el operador ::new para usar el GC de Boehm. Sin embargo, puede entrar en conflicto con el código C existente y es posible que no sea portátil entre diferentes compiladores.
Argumento del asignador explícito
En lugar de redefinir el operador ::nuevo, puede usar el segundo argumento de plantilla de las colecciones de bibliotecas estándar para especificar un asignador personalizado. Este argumento controla cómo se asigna la memoria para las estructuras de datos internas de la colección.
Ejemplo con std::vector
El siguiente código demuestra cómo usar gc_allocator con std:: vector:
#include
#include
std::vector> myVector(10); // Allocate vector with GC-specific allocator
std::string Integration
Para std::string, puedes usar GC_malloc_atomic para asignar explícitamente la matriz de caracteres interna:
#include
#include
std::string myString((char*)GC_malloc_atomic(10), 10); // Allocate string with GC_malloc_atomic
Nota:
Generalmente no es aconsejable redefinir el operador ::new al integrar Boehm GC con g . En su lugar, prefiera utilizar el enfoque de argumento del asignador explícito para una mayor portabilidad y compatibilidad.
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