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
より小さくない値です。 その新しいバッファを現在のバッファとして設定し、次のバッファサイズを処理系定義の増加係数 (整数であるとは限りません) によって増加させ、新たに確保したバッファから返すブロックを確保します。
[編集] 戻り値
そのようなアライメントがサポートされていれば指定された alignment
に、そうでなければ alignof(std::max_align_t) にアラインされた、少なくとも bytes
バイトのサイズの、確保された記憶域を指すポインタ。
[編集] 例外
上流メモリリソースの allocate()
の呼び出しが投げなければ何も投げません。
[編集] 関連項目
メモリを確保します ( std::pmr::memory_resource のパブリックメンバ関数)
| |
[仮想] |
メモリを確保します ( std::pmr::memory_resource の仮想プライベートメンバ関数)
|