std::experimental::pmr:: unsynchronized_pool_resource
From cppreference.net
<
cpp
|
experimental
|
헤더 파일에 정의됨
<experimental/memory_resource>
|
||
|
class
unsynchronized_pool_resource
:
public
memory_resource
;
|
(라이브러리 펀더멘털 TS) | |
클래스
std::experimental::pmr::unsynchronized_pool_resource
는 다음과 같은 속성을 가진 범용 메모리 리소스 클래스입니다:
-
할당된 메모리를 소유하며, 일부 할당된 블록에 대해
deallocate가 호출되지 않았더라도 소멸 시 메모리를 해제합니다. - 서로 다른 블록 크기에 대한 요청을 처리하는 풀(pools) 컬렉션으로 구성됩니다. 각 풀은 균일한 크기의 블록으로 분할되는 청크(chunks) 컬렉션을 관리합니다.
- do_allocate 호출은 요청된 크기를 수용할 수 있는 가장 작은 블록을 제공하는 풀로 전달됩니다.
- 풀의 메모리가 고갈되면 해당 풀에 대한 다음 할당 요청이 업스트림 할당자(upstream allocator) 로부터 추가 청크 메모리를 할당하여 풀을 보충합니다. 획득하는 청크 크기는 기하급수적으로 증가합니다.
- 가장 큰 블록 크기를 초과하는 할당 요청은 업스트림 할당자(upstream allocator) 로부터 직접 제공됩니다.
- 최대 블록 크기와 최대 청크 크기는 생성자에 std::experimental::pmr::pool_options 구조체를 전달하여 조정할 수 있습니다.
unsynchronized_pool_resource
는 스레드 안전하지 않으며, 여러 스레드에서 동시에 접근할 수 없습니다; 여러 스레드에서의 접근이 필요한 경우
synchronized_pool_resource
를 사용하십시오.
멤버 함수
unsynchronized_pool_resource
를 생성함
(public 멤버 함수) |
|
|
[virtual]
|
unsynchronized_pool_resource
를 파괴하고 모든 할당된 메모리를 해제함
(virtual public 멤버 함수) |
|
operator=
[deleted]
|
복사 할당 연산자가 삭제됨.
unsynchronized_pool_resource
는 복사 할당이 불가능함
(public 멤버 함수) |
Public 멤버 함수 |
|
|
모든 할당된 메모리를 해제함
(public 멤버 함수) |
|
|
상위 메모리 리소스에 대한 포인터를 반환함
(public 멤버 함수) |
|
|
이 리소스의 풀링 동작을 제어하는 옵션을 반환함
(public 멤버 함수) |
|
Protected 멤버 함수 |
|
|
[virtual]
|
메모리 할당
(virtual protected 멤버 함수) |
|
[virtual]
|
메모리를 풀로 반환함
(virtual protected 멤버 함수) |
|
[virtual]
|
다른
memory_resource
와의 동등성 비교
(virtual protected 멤버 함수) |