polymorphic_allocator — std::pmr::polymorphic_allocator
polymorphic_allocator — std::pmr::polymorphic_allocator
std::pmr::polymorphic_allocator는 std::pmr::memory_resource에 연결된 할당자예요. <memory_resource> 헤더에 제공돼요.
표준 컨테이너의 할당자로 쓸 수 있어서, 실행 중에 메모리 자원을 바꿔가며 할당 전략을 스위칭할 수 있게 해요. 템플릿 인자가 아닌 런타임 메모리 자원 포인터로 동작한다는 점이 핵심이에요.
출처: cppreference
본문
std::pmr::polymorphic_allocator는 메모리 자원에 연결된 할당자 클래스예요.
template<class T = std::byte> // C++20부터 T 기본 인자
class polymorphic_allocator;
polymorphic_allocator는 내부에 std::pmr::memory_resource*를 보관해요. 할당·해제 시 그 메모리 자원의 allocate/deallocate를 호출해요. memory_resource를 교체하면 할당 동작이 바뀌는 거예요.
std::pmr::vector<int> v1; // 기본 자원 사용
std::pmr::monotonic_buffer_resource buf;
std::pmr::vector<int> v2(&buf); // 버퍼 자원 사용
제네릭 할당자 인터페이스를 만족하므로 std::vector, std::map 등에 할당자로 넘길 수 있어요. memory_resource가 런타임에 선택되므로, 같은 타입이라도 컨테이너마다 다른 메모리 전략을 쓸 수 있어요.
이를 활용하면 게임·서버에서 메모리 풀링, 단조 버퍼, 영역 기반 할당(arena) 등을 컨테이너에 쉽게 적용할 수 있어요.
같이 보기
std::pmr::memory_resourcestd::pmr::polymorphic