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 을 던짐