C 표준 라이브러리와 보수적 가비지 컬렉션 통합
질문:
다중에서 -스레드 C 애플리케이션, Boehm의 보수적인 가비지 수집기(GC)를 C 표준 라이브러리와 함께 효과적으로 활용할 수 있습니까? 구체적으로 연산자 ::new와 std::Vector 및 std::string에서 제공하는 할당자를 어떻게 처리해야 합니까?
답변:
1. 연산자 ::new:
Boehm의 GC에서는 ::operator new를 재정의할 필요가 없습니다. Boehm의 GC를 적절히 활용하면 ::operator new를 명시적으로 재정의하는 것을 피할 수 있습니다.
2. 표준 라이브러리 컨테이너용 할당자:
std::Vector:
std::string:
예:
다음 코드는 GC 할당 벡터의 사용자 정의 구현을 보여줍니다.
<code class="cpp">#include <gc/gc_cpp.h> #include <gc/gc_allocator.h> #include <vector> class Myvec { std::vector<int, gc_allocator<int>> _vec; public: Myvec(size_t sz = 0) : _vec(sz) {} // ... (rest of class implementation) };</code>
3. g와의 호환성 :
예, g로 컴파일된 애플리케이션과 함께 Boehm GC를 사용할 수 있습니다. GC를 표준 라이브러리와 효과적으로 통합하려면 위 지침을 따르세요.
부록(2017년 1월):
위 내용은 Boehm의 보수적인 가비지 수집기는 다중 스레드 응용 프로그램용 C 표준 라이브러리와 통합될 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!