Namespaces
Variants

std::pmr:: synchronized_pool_resource

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
헤더 파일에 정의됨 <memory_resource>
class synchronized_pool_resource : public std:: pmr :: memory_resource ;
(C++17부터)

클래스 std::pmr::synchronized_pool_resource 는 다음과 같은 속성을 가진 범용 메모리 리소스 클래스입니다:

  • 할당된 메모리를 소유하며, 일부 할당된 블록에 대해 deallocate 가 호출되지 않았더라도 소멸 시 메모리를 해제합니다.
  • 서로 다른 블록 크기에 대한 요청을 처리하는 풀(pools) 컬렉션으로 구성됩니다. 각 풀은 균일한 크기의 블록으로 분할되는 청크(chunks) 컬렉션을 관리합니다.
  • do_allocate 호출은 요청된 크기를 수용할 수 있는 가장 작은 블록을 제공하는 풀로 전달됩니다.
  • 풀에서 메모리가 고갈되면 해당 풀에 대한 다음 할당 요청이 업스트림 할당자(upstream allocator) 로부터 추가 청크 메모리를 할당하여 풀을 보충합니다. 획득하는 청크 크기는 기하급수적으로 증가합니다.
  • 가장 큰 블록 크기를 초과하는 할당 요청은 업스트림 할당자(upstream allocator) 로부터 직접 제공됩니다.
  • 최대 블록 크기와 최대 청크 크기는 생성자에 std::pmr::pool_options 구조체를 전달하여 조정할 수 있습니다.

synchronized_pool_resource 는 외부 동기화 없이 여러 스레드에서 접근할 수 있으며, 동기화 비용을 줄이기 위해 스레드별 풀을 가질 수 있습니다. 만약 메모리 리소스가 단일 스레드에서만 접근된다면, unsynchronized_pool_resource 가 더 효율적입니다.

멤버 함수

synchronized_pool_resource 를 생성합니다
(public member function)
[virtual]
synchronized_pool_resource 를 파괴하고 모든 할당된 메모리를 해제합니다
(virtual public member function)
operator=
[deleted]
복사 할당 연산자가 삭제됨. synchronized_pool_resource 는 복사 할당이 불가능합니다
(public member function)
Public member functions
모든 할당된 메모리를 해제합니다
(public member function)
상위 메모리 리소스에 대한 포인터를 반환합니다
(public member function)
이 리소스의 풀링 동작을 제어하는 옵션을 반환합니다
(public member function)
Protected member functions
[virtual]
메모리를 할당합니다
(virtual protected member function)
[virtual]
메모리를 풀로 반환합니다
(virtual protected member function)
[virtual]
다른 memory_resource 와 동등성을 비교합니다
(virtual protected member function)