std::experimental::pmr::monotonic_buffer_resource::do_allocate
From cppreference.com
< cpp | experimental | monotonic buffer resource
| virtual void* do_allocate( std::size_t bytes, std::size_t alignment ); |
(Library Fundamentals TS) | |
ストレージを確保します。
現在のバッファに、指定されたサイズとアライメントのブロックを格納するのに十分な未使用スペースがある場合、現在のバッファから戻りブロックを割り当てます。
そうでない場合、この関数は upstream_resource()->allocate(n, m) を呼び出して新しいバッファを割り当てます。ここで n は bytes と 次のバッファサイズ の大きい方以上であり、m は alignment 以上です。新しいバッファを 現在のバッファ として設定し、実装定義の成長係数(必ずしも整数であるとは限らない)によって 次のバッファサイズ を増やしてから、新しく割り当てられたバッファから戻りブロックを割り当てます。
[編集] 戻り値
少なくとも bytes バイトのサイズで、指定された alignment にアラインされた(そのようなアラインメントがサポートされている場合)、そうでなければ alignof(std::max_align_t) にアラインされた、確保されたストレージへのポインタ。
[編集] 例外
上位のメモリリソースの allocate() の呼び出しが例外をスローしない限り、何もスローしません。
[編集] 関連項目
| メモリを割り当てる ( std::experimental::pmr::memory_resource の public メンバ関数) | |
| [virtual] |
メモリを割り当てる ( std::experimental::pmr::memory_resource の virtual protected メンバ関数) |