Usando o Boehm Garbage Collector com C Standard Library
Ao desenvolver aplicativos C multithread, o coletor de lixo conservador de Boehm pode ser útil para simplificar a memória gerenciamento. Isso levanta a questão de como integrar o Boehm GC com as classes da biblioteca padrão C, como std::map e std::vector.
Uma abordagem envolve a redefinição do operador global ::new para usar a implementação de Boehm. No entanto, uma solução mais direta é especificar explicitamente o argumento do modelo do alocador nos modelos de coleção de biblioteca padrão.
Por exemplo, para alocar GC um vetor de inteiros, pode-se usar:
std::vector> my_vector;
O segundo argumento do modelo em std::vector é usado para controlar a alocação do a estrutura de dados interna do vetor, não os elementos individuais.
Para std::string, usar Basic_string com gc_allocator é uma opção:
std::basic_string, gc_allocator> my_string;
Alternativamente, pode-se fornecer a matriz de caracteres diretamente com GC_malloc_atomic.
Em resumo, usar Boehm GC com std::vector, std::string e outras classes de biblioteca padrão é possível especificando o argumento do modelo gc_allocator. Redefinir o operador ::new não é necessário.
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