memory_set_default_resource
memory_set_default_resource (std::pmr::set_default_resource)
<memory_resource> 헤더에 정의되어 있어요. 기본 메모리 리소스 포인터를 설정해요. C++17부터 도입됐어요.
출처: cppreference
본문
std::pmr::memory_resource* set_default_resource( std::pmr::memory_resource* r ) noexcept;
(C++17부터)
r이 널이 아니면 기본 메모리 리소스 포인터를 r로 설정하고, 널이면 기본 메모리 리소스 포인터를 std::pmr::new_delete_resource()로 설정해요. 기본 메모리 리소스 포인터는 명시적 메모리 리소스가 제공되지 않을 때 특정 기능들이 사용해요.
매개변수
r: 새 기본 메모리 리소스. 널이면 기본값(new_delete_resource)으로 되돌려요.
반환값
이전의 기본 메모리 리소스 포인터.
이 함수는 스레드 안전해요. set_default_resource 호출은 이후의 get_default_resource 호출과 동기화돼요.
std::pmr::monotonic_buffer_resource my_pool;
std::pmr::memory_resource* prev = std::pmr::set_default_resource(&my_pool);
// 이후 명시적 리소스 없는 pmr 컨테이너들은 my_pool 을 사용
// ...
std::pmr::set_default_resource(prev); // 되돌리기
기본 리소스를 바꾸면 모든 기본 std::pmr 컨테이너의 할당 전략을 함께 바꿀 수 있어요. 프로그램 전체의 메모리 전략을 교체하고 싶을 때 유용하지만, 전역 상태를 바꾸므로 신중히 사용해야 해요.