memory_memory_resource

memory_memory_resource (std::pmr::memory_resource)

<memory_resource> 헤더에 정의되어 있어요. 메모리 리소스를 감싸는 무수한 클래스 집합에 대한 추상 인터페이스예요. C++17부터 도입됐어요. std::pmr 다형적 메모리 리소스의 기반 클래스예요.

출처: cppreference

본문

class memory_resource;

(C++17부터)

클래스 std::pmr::memory_resource는 메모리 리소스를 감싸는 무한한 클래스 집합에 대한 추상 인터페이스예요.

멤버 함수

  • (생성자, 암시 선언): 새 memory_resource 생성 (공개 멤버 함수)
  • (소멸자, virtual): memory_resource 파괴 (가상 공개 멤버 함수)
  • operator= (암시 선언): 복사 대입 연산자 (공개 멤버 함수)

공개 멤버 함수

  • allocate: 메모리 할당 (공개 멤버 함수)
  • deallocate: 메모리 해제 (공개 멤버 함수)
  • is_equal (보호): 두 리소스가 동등한지 비교

memory_resource는 추상 인터페이스이므로 직접 인스턴스화할 수 없고, std::pmr::new_delete_resource, std::pmr::monotonic_buffer_resource, std::pmr::pool_resource 같은 구체 리소스가 이를 구현해요.

std::pmr::memory_resource* res = std::pmr::new_delete_resource();
void* p = res->allocate(n, alignof(T));   // 할당
res->deallocate(p, n, alignof(T));        // 해제

allocate/deallocate는 공개 do_allocate/do_deallocate를 호출하고, is_equal은 리소스 동등성을 판단해요. 파생 클래스는 정렬을 존중하는 할당·해제를 구현해야 해요.

더 알아보기 (Learn more)

cppreference