std::pmr::monotonic_buffer_resource::do_allocate
来自cppreference.com
< cpp | memory | monotonic buffer resource
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 的虚私有成员函数) |