memory_new_delete_resource

memory_new_delete_resource (std::pmr::new_delete_resource)

<memory_resource> 헤더에 정의되어 있어요. 전역 operator newoperator delete를 사용해 메모리를 할당하는 memory_resource에 대한 포인터를 돌려줘요. C++17부터 도입됐어요.

출처: cppreference

본문

std::pmr::memory_resource* new_delete_resource() noexcept;

(C++17부터)

전역 operator newoperator delete를 사용해 메모리를 할당하는 memory_resource에 대한 포인터를 돌려줘요.

반환값

std::pmr::memory_resource에서 파생된 타입의 정적 저장 기간 객체에 대한 포인터 p를 돌려줘요. 속성은 다음과 같아요.

  • allocate() 함수는 ::operator new를 사용해 메모리를 할당해요.
  • deallocate() 함수는 ::operator delete를 사용해 메모리를 해제해요.
  • 어떤 메모리 리소스 r에 대해 p->is_equal(r)&r == p를 반환해요.

같은 값이 항상 반환되며, 어떤 메모리 리소스의 is_equal&r == p처럼 이 리소스와 비교 시 p를 반환하면 true예요. std::pmr::get_default_resource()의 초기값이 바로 이 리소스예요.

std::pmr::memory_resource* res = std::pmr::new_delete_resource();
std::pmr::vector<int> v(res);   // new/delete 로 할당하는 벡터

이 리소스는 가장 일반적인 "그냥 new/delete 쓰는" 기본 전략으로, 딱히 특별한 풀링이나 캐싱을 하지 않아요.

더 알아보기 (Learn more)

cppreference