• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <memory_resource>

    std::pmr::monotonic_buffer_resource::do_allocate

    void* do_allocate(std::size_t bytes, std::size_t alignment) override;
    

    概要

    要求されたサイズおよびアライメントでメモリを割り当てる。

    割り当てられた領域のサイズと配置・要件等はmemory_resource::do_allocate()に従う。

    事前条件

    alignmentは2の累乗であること

    引数

    • bytes -- 割り当てるメモリのサイズ
    • alignment -- 割り当てる領域へのアライメント要求

    効果

    内部メモリ領域から指定されたbytesalignmentでメモリを割り当てることができる場合は(内部メモリにそのような空き領域がある場合は)内部メモリ領域から割り当てを行う。
    それができない場合、上流メモリリソースから内部メモリ領域を補充し割り当てを行う。

    内部メモリ領域を補充する場合、this->upstream_resource()->allocate(n, m)のように上流メモリリソースから追加のメモリを取得する。
    次に補充する予定のメモリ領域サイズをnext_buffer_sizeという変数に保持しているとするとn, mn = max(bytes, next_buffer_size)m >= alignmentとなる値をそれぞれ用いる。
    その後、next_buffer_size実装定義の増加分(整数とは限らない)だけ増やす。

    少なくともbytesのメモリを割り当て、alignmentにアラインする。

    戻り値

    割り当てた領域の先頭へのポインタ

    例外

    this->upstream_resource()->allocate()例外を投げないのならば、この関数も例外を投げない。

    バージョン

    言語

    • C++17

    処理系

    関連項目

    参照