memory_null_memory_resource

memory_null_memory_resource (std::pmr::null_memory_resource)

<memory_resource> 헤더에 정의되어 있어요. 아무 할당도 수행하지 않는 memory_resource에 대한 포인터를 돌려줘요. C++17부터 도입됐어요.

출처: cppreference

본문

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

(C++17부터)

아무 할당도 수행하지 않는 memory_resource에 대한 포인터를 돌려줘요.

반환값

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

  • allocate() 함수는 항상 std::bad_alloc을 던져요.
  • deallocate() 함수는 아무 효과가 없어요.
  • 어떤 메모리 리소스 r에 대해 p->is_equal(r)&r == p를 반환해요.

같은 값이 항상 반환되며, 어떤 메모리 리소스의 is_equal&r == p처럼 이 리소스와 비교 시 p를 반환하면 true예요.

이 리소스는 할당을 절대 허용하지 않게 하고 싶을 때 써요. 예를 들어 상수 크기 범위를 벗어나면 항상 실패하게 만들거나, 프로그래머가 메모리 리소스를 항상 명시해 주길 강제하는 테스트에 유용해요.

std::pmr::memory_resource* res = std::pmr::null_memory_resource();
std::pmr::vector<int> v(res);
// v.push_back(...) 은 즉시 std::bad_alloc 을 던짐

더 알아보기 (Learn more)

cppreference