std::pmr::monotonic_buffer_resource::do_allocate

来自cppreference.com
 
 
动态内存管理
智能指针
(C++11)
(C++11)
(C++11)
(C++17 前)
(C++11)
(C++23)
分配器
内存资源
未初始化存储
未初始化内存算法
受约束的未初始化内存算法
垃圾收集支持
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
杂项
(C++20)
(C++11)
(C++11)
C 库
低层内存管理
 
 
virtual void* do_allocate(std::size_t bytes, std::size_t alignment);
(C++17 起)

分配存储

当前缓冲区足以不使用空间以适合一个拥有指定大小和对齐的块,则从当前缓冲区分配返回的块。

否则,此函数通过调用 upstream_resource()->allocate(n, m) 分配新缓冲区,其中 n 不小于bytes下个缓冲区大小的较大者,且 m 不小于 alignment 。它设置新缓冲区为当前缓冲区,以实现定义的增长因子(不必是整数)增加下个缓冲区大小,然后从新分配的缓冲区分配返回块。

返回值

指向至少 bytes 字节大小的指针,若支持该对齐则对齐到指定的 alignment ,否则对齐到 alignof(std::max_align_t)

异常

不抛出任何异常,除非上游 memory_resource 的 allocate() 抛出。

参阅

分配内存
(std::pmr::memory_resource 的公开成员函数)
分配内存
(std::pmr::memory_resource 的虚私有成员函数)