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

履歴 編集

function
<memory_resource>

std::pmr::monotonic_buffer_resource::コンストラクタ(C++17)

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

処理系

関連項目

参照