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_resource
  • std::pmr::pool_options
  • std::pmr::synchronized_pool_resource

더 알아보기 (Learn more)

cppreference