C 표준 라이브러리와 함께 Boehm Garbage Collector 사용
멀티 스레드 C 애플리케이션을 개발할 때 Boehm의 보수적 가비지 수집기는 메모리 단순화에 유용할 수 있습니다. 관리. 이는 Boehm GC를 std::map 및 std::Vector와 같은 C 표준 라이브러리의 클래스와 통합하는 방법에 대한 의문을 제기합니다.
한 가지 접근 방식에는 Boehm의 구현을 사용하기 위해 전역 연산자 ::new를 재정의하는 것이 포함됩니다. 그러나 보다 간단한 해결책은 표준 라이브러리 컬렉션 템플릿에서 할당자 템플릿 인수를 명시적으로 지정하는 것입니다.
예를 들어 정수 벡터를 GC 할당하려면 다음을 사용할 수 있습니다.
std::vector> my_vector;
std::벡터의 두 번째 템플릿 인수는 개별 요소가 아닌 벡터의 내부 데이터 구조 할당을 제어하는 데 사용됩니다.
std::string의 경우 gc_allocator와 함께 Basic_string을 사용하는 것은 옵션입니다.
std::basic_string, gc_allocator> my_string;
또는 GC_malloc_atomic을 사용하여 문자 배열을 직접 제공할 수 있습니다.
요약하면 Boehm GC를 std::벡터, std::string 및 기타 표준 라이브러리 클래스와 함께 사용하는 것은 다음과 같이 가능합니다. gc_allocator 템플릿 인수를 지정합니다. 연산자 ::new를 재정의할 필요는 없습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3