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)對齊。
[編輯] 異常
除非呼叫上游記憶體資源的 allocate()
丟擲異常,否則不丟擲任何異常。
[編輯] 另請參見
分配記憶體 ( std::pmr::memory_resource 的公共成員函式) | |
[虛擬函式] |
分配記憶體 ( std::pmr::memory_resource 的虛私有成員函式) |