CppDS.com

C++ 98 11 14 17 20 手册

std::pmr::synchronized_pool_resource

来自cppreference.com
< cpp‎ | memory
 
 
动态内存管理
智能指针
(C++11)
(C++11)
(C++11)
(C++17 前)
(C++11)
分配器
内存资源
pmr::synchronized_pool_resource
(C++17)
未初始化存储
未初始化内存算法
有制约的未初始化内存算法
垃圾收集支持
杂项
(C++20)
(C++11)
(C++11)
C 库
低层内存管理
 
 
定义于头文件 <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
(公开成员函数)
销毁 synchronized_pool_resource ,释放所有分配的资源
(虚公开成员函数)
operator=
[被删除]
复制赋值运算符被删除。 synchronized_pool_resource 不可复制赋值
(公开成员函数)
公开成员函数
释放所有分配的内存
(公开成员函数)
返回指向上游 memory_resource 的指针
(公开成员函数)
返回控制此资源分池行为的选项
(公开成员函数)
受保护成员函数
分配内存
(虚受保护成员函数)
返还内存到池
(虚受保护成员函数)
与另一 memory_resource 比较相等
(虚受保护成员函数)
关闭