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,则对齐到该指定alignment,否则对齐到alignof(std::max_align_t)。
[编辑] 异常
除非在 upstream 内存资源上调用allocate()
抛出异常,否则不抛出任何异常。
[编辑] 另请参见
分配内存 ( std::pmr::memory_resource 的公共成员函数) | |
[虚拟] |
分配内存 ( std::pmr::memory_resource 的虚拟私有成员函数) |