std::pmr::monotonic_buffer_resource::do_allocate
来自 cppreference.cn
< 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)对齐。
[编辑] 异常
除非调用上游内存资源的 allocate()
抛出异常,否则不抛出任何异常。
[编辑] 另请参见
分配内存 ( std::pmr::memory_resource 的公共成员函数) | |
[虚函数] |
分配内存 ( std::pmr::memory_resource 的虚私有成员函数) |