Namespaces
Variants

std::experimental::pmr::monotonic_buffer_resource:: do_allocate

From cppreference.net
virtual void * do_allocate ( std:: size_t bytes, std:: size_t alignment ) ;
(ライブラリ基盤技術仕様)

ストレージを割り当てます。

現在のバッファ が指定されたサイズとアライメントに合うブロックを収容するのに十分な未使用領域を持っている場合、現在のバッファから返却ブロックを割り当てます。

それ以外の場合、この関数は 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 の仮想保護メンバ関数)