"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como integrar o coletor de lixo de Boehm à biblioteca padrão C++?

Como integrar o coletor de lixo de Boehm à biblioteca padrão C++?

Publicado em 2024-11-08
Navegar:645

How to Integrate Boehm\'s Garbage Collector with the C   Standard Library?

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.

Tutorial mais recente Mais>

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