Integrando Boehm Garbage Collector e C Standard Library
Para integrar perfeitamente o coletor de lixo conservador de Boehm com coleções de biblioteca padrão C, existem duas abordagens principais :
Redefinindo Operador ::novo
Essa abordagem envolve redefinir operador ::new para usar o GC de Boehm. No entanto, ele pode entrar em conflito com o código C existente e pode não ser portátil entre diferentes compiladores.
Argumento explícito do alocador
Em vez de redefinir o operador ::new, você pode usar o segundo argumento de modelo de coleções de bibliotecas padrão para especificar um alocador personalizado. Este argumento controla como a memória para as estruturas de dados internas da coleção é alocada.
Exemplo com std::vector
O código a seguir demonstra como usar gc_allocator com std:: vetor:
#include
#include
std::vector> myVector(10); // Allocate vector with GC-specific allocator
std::string Integration
Para std::string, você pode usar GC_malloc_atomic para alocar explicitamente a matriz de caracteres interna:
#include
#include
std::string myString((char*)GC_malloc_atomic(10), 10); // Allocate string with GC_malloc_atomic
Nota:
Geralmente não é aconselhável redefinir o operador ::new ao integrar o Boehm GC com g . Em vez disso, prefira usar a abordagem explícita do argumento do alocador para maior portabilidade e compatibilidade.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3