monotonic_buffer_resource — std::pmr::monotonic_buffer_resource
monotonic_buffer_resource — std::pmr::monotonic_buffer_resource
std::pmr::monotonic_buffer_resource는 특수 목적 메모리 자원 클래스로, 메모리를 자원이 파괴될 때만 해제해요. <memory_resource> 헤더에 제공돼요.
"몇 개의 객체를 만드는 데 메모리를 쓰고 나중에 한꺼번에 해제"하는 상황을 위한 아주 빠른 할당이 목적이에요. 할당 시 해제 비용이 없어서(해제를 파괴 시점으로 미룸) 속도가 매우 빠르다는 장점이 있어요.
출처: cppreference
본문
std::pmr::monotonic_buffer_resource는 메모리를 자원이 파괴될 때만 해제하는 특수 목적 메모리 자원 클래스예요.
class monotonic_buffer_resource : public std::pmr::memory_resource;
메모리가 몇 개의 객체를 만드는 데 쓰이고 나서 한꺼번에 해제되는 상황에서 아주 빠른 할당을 제공하는 것이 목적이에요.
monotonic_buffer_resource는 초기 버퍼와 함께 생성될 수 있어요. 초기 버퍼가 없거나 버퍼가 소진되면, 생성 시 제공된 **업스트림 메모리 자원(upstream memory resource)**에서 추가 버퍼를 얻어요. 얻는 버퍼의 크기는 기하급수적으로 증가해요.
이 자원은 스레드 안전하지 않아요. 따라서 한 스레드에서만 사용해야 해요.
deallocate를 명시적으로 호출해도 실제 메모리 해제는 일어나지 않고, 자원이 파괴될 때 모든 메모리가 한꺼번에 해제돼요. 그래서 "빠르게 버퍼들을 만들고 한 번에 버리는" 패턴에 매우 효율적이에요.
같이 보기
std::pmr::memory_resourcestd::pmr::pool_optionsstd::pmr::synchronized_pool_resource