C++
动态内存管理 | Dynamic memory management

std::pmr::monotonic_buffer_resource::do_allocate

STD::PMR:单调[医]缓冲器[医]资源::DO[医]分配

virtual void* do_allocate(std::size_t bytes, std::size_t alignment(since C++17)

分配存储。

如果电流缓冲器有足够的未使用空间来适合具有指定大小和对齐方式的块,则从当前缓冲区分配返回块。

否则,此函数将通过调用upstream_resource()->allocate(n, m),在哪里n不少于bytes而下一缓冲区大小和m不少于alignment它将新缓冲区设置为电流缓冲器,增加下一缓冲区大小通过实现定义的增长因子%28(不一定是整数%29),然后从新分配的缓冲区分配返回块。

返回值

指向至少分配的存储的指针bytes大小对齐的字节。alignment如果支持这种对齐,则alignof(std::max_align_t)否则。

例外

除非调用allocate()在上游内存资源抛出。

另见

allocateallocates memory (public member function of std::pmr::memory_resource)
do_allocate virtualallocates memory (virtual private member function of std::pmr::memory_resource)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/Memory/单调[医]缓冲器[医]资源/做[医]分配