std::experimental::pmr::monotonic_buffer_resource::do_allocate
來自 cppreference.com
< cpp | experimental | monotonic_buffer_resource
virtual void* do_allocate( std::size_t bytes, std::size_t alignment ); |
(庫基礎 TS) | |
分配儲存。
如果*當前緩衝區*有足夠的未使用空間來容納具有指定大小和對齊方式的塊,則從當前緩衝區分配返回塊。
否則,此函式透過呼叫`upstream_resource()->allocate(n, m)`分配一個新緩衝區,其中`n`不小於`bytes`和*下一個緩衝區大小*中的較大者,`m`不小於`alignment`。它將新緩衝區設定為*當前緩衝區*,透過實現定義的增長因子(不一定是整數)增加*下一個緩衝區大小*,然後從新分配的緩衝區分配返回塊。
[編輯] 返回值
一個指向已分配儲存的指標,其大小至少為`bytes`位元組,如果支援對齊,則按照指定的`alignment`對齊,否則按照`alignof(std::max_align_t)`對齊。
[編輯] 異常
除非呼叫上游記憶體資源的 allocate()
丟擲異常,否則不丟擲任何異常。
[編輯] 另請參閱
分配記憶體 (`std::experimental::pmr::memory_resource`的公共成員函式) | |
[virtual] |
分配記憶體 (`std::experimental::pmr::memory_resource`的虛保護成員函式) |