• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <memory_resource>

    std::pmr::monotonic_buffer_resource::コンストラクタ

    explicit monotonic_buffer_resource(memory_resource* upstream);                      //(1)
    
    monotonic_buffer_resource(size_t initial_size, memory_resource *upstream);          //(2)
    
    monotonic_buffer_resource(void *buffer, size_t buffer_size,
                                memory_resource *upstream);                             //(3)
    
    monotonic_buffer_resource()
            : monotonic_buffer_resource(get_default_resource()) {}                      //(4)
    
    explicit monotonic_buffer_resource(size_t initial_size)
            : monotonic_buffer_resource(initial_size, get_default_resource()) {}        //(5)
    
    monotonic_buffer_resource(void *buffer, size_t buffer_size)
            : monotonic_buffer_resource(buffer, buffer_size, get_default_resource()) {} //(6)
    
    monotonic_buffer_resource(const monotonic_buffer_resource&) = delete;               //(7)
    

    概要

    • (1) : 上流memory_resourceを受けて構築
    • (2) : 内部メモリ領域の初期サイズを指定し、上流memory_resourceを受けて構築
    • (3) : 別に確保されたメモリ領域を初期メモリ領域として使用し、上流memory_resourceを受けて構築
    • (4) : デフォルトコンストラクタ、
    • (5) : 内部メモリ領域の初期サイズを指定し構築
    • (6) : 別に確保されたメモリ領域を初期メモリ領域として使用し構築
    • (7) : コピーコンストラクタ、コピー禁止

    要件

    • (1)(2)(3) : upstreamは有効なmemory_resourceオブジェクトを指していること。(当然、nullでないこと)
    • (2)(5) : initial_sizeは0より大きいこと
    • (3)(6) : buffer_sizebufferに割り当てられているメモリ領域のサイズ以下であること。

    引数

    • upstream -- 利用したい上流memory_resourceへのポインタ
    • initial_size -- 内部メモリ領域の初期サイズ
    • buffer -- 初期メモリ領域として利用する外部メモリへのポインタ
    • buffer_size -- bufferの指す領域のサイズ

    効果

    • (1) : upstreamを上流memory_resourceとして設定し、初期メモリ領域を空(nullptr)、次に補充するメモリサイズを実装定義の値に設定

    • (2) : upstreamを上流memory_resourceとして設定し、初期メモリ領域を空(nullptr)、次に補充するメモリサイズをinitial_sizeに設定

    • (3) : upstreamを上流memory_resourceとして設定し、bufferを初期メモリ領域、buffer_size実装定義の増加分を足した値(整数とは限らない)を次に補充するメモリサイズに設定

    • (4) : get_default_resource()から取得したmemory_resourceを(1)に渡し委譲

    • (5) : initial_sizeget_default_resource()から取得したmemory_resourceを(2)に渡し委譲

    • (6) : bufferbuffer_size及びget_default_resource()から取得したmemory_resourceを(3)に渡し委譲

    (4)(5)(6)のコンストラクタは上流メモリリソースとしてget_default_resource()から取得したmemory_resourceを利用する。

    備考

    どのコンストラクタの初期化においても、上流メモリリソースの所有権を保持しない。

    #include <memory_resource>
    
    int main()
    {
      //(1) 上流メモリリソースを受けて構築
      {
        std::pmr::synchronized_pool_resource pr{};
        std::pmr::monotonic_buffer_resource mr{ &pr };
      }
    
      //(2) 初期サイズと上流メモリリソースを受けて構築
      {
        std::pmr::synchronized_pool_resource pr{};
        std::pmr::monotonic_buffer_resource mr{ 1024, &pr };
      }
    
      //(3) 外部領域を初期メモリ領域として利用し、上流メモリリソースを受けて構築
      {
        char buf[1024]{};
        std::pmr::synchronized_pool_resource pr{};
        std::pmr::monotonic_buffer_resource mr{ buf, sizeof(buf), &pr };
      }
    
      //(4) デフォルト構築
      {
        std::pmr::monotonic_buffer_resource mr{};
      }
    
      //(5) 初期サイズのみを指定して構築
      {
        std::pmr::monotonic_buffer_resource mr{ 1024 };
      }
    
      //(6) 外部領域を初期メモリ領域として利用し構築
      {
        char buf[1024]{};
        std::pmr::monotonic_buffer_resource mr{ buf, sizeof(buf) };
      }
    }
    

    出力

    バージョン

    言語

    • C++17

    処理系

    関連項目

    参照