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
  • 它由一组服务于不同块大小请求的 内存池 构成。每个池管理一组 内存块 ,这些内存块被进一步划分为统一大小的区块。
  • do_allocate 的调用会被分派至能容纳请求大小的最小块对应的内存池。
  • 当池中内存耗尽时,该池的下一次分配请求会从 上游分配器 分配额外的内存块以补充池。获取的内存块大小呈几何级数增长。
  • 超过最大块大小的分配请求将直接由 上游分配器 处理。
  • 可通过向构造函数传递 std::pmr::pool_options 结构体来调整最大块大小和最大内存块尺寸。

synchronized_pool_resource 可在无需外部同步的情况下从多个线程访问,并可能具有线程特定的池以减少同步开销。若内存资源仅从单个线程访问,则 unsynchronized_pool_resource 更为高效。

成员函数

构造 synchronized_pool_resource
(公开成员函数)
[virtual]
销毁 synchronized_pool_resource ,释放所有已分配内存
(虚公开成员函数)
operator=
[deleted]
复制赋值运算符被删除。 synchronized_pool_resource 不可复制赋值
(公开成员函数)
公开成员函数
释放所有已分配内存
(公开成员函数)
返回指向上游内存资源的指针
(公开成员函数)
返回控制此资源池化行为的选项
(公开成员函数)
受保护成员函数
[virtual]
分配内存
(虚受保护成员函数)
[virtual]
将内存归还给内存池
(虚受保护成员函数)
[virtual]
与另一个 memory_resource 进行相等性比较
(虚受保护成员函数)