• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <memory_resource>

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

    pool_resource(const pool_options& opts, memory_resource* upstream);  //(1)
    
    pool_resource()
          : pool_resource(pool_options(), get_default_resource()) {}     //(2)
    
    explicit pool_resource(memory_resource* upstream)
          : pool_resource(pool_options(), upstream) {}                   //(3)
    
    explicit pool_resource(const pool_options& opts)
          : pool_resource(opts, get_default_resource()) {}               //(4)
    
    pool_resource(const pool_resource&) = delete;                        //(5)
    

    概要

    • (1) : pool_optionsによる設定と上流memory_resourceを受けて構築
    • (2) : デフォルトコンストラクタ
    • (3) : 上流memory_resourceを受けて構築
    • (4) : pool_optionsによる設定を受けて構築
    • (5) : コピーコンストラクタ、コピー禁止

    クラス名をpool_resourceとしているのは説明のためのプレースホルダで、synchronized_pool_resourceunsynchronized_pool_resourceで共通ということである。

    要件

    • (1)(3) : upstreamは有効なmemory_resourceオブジェクトを指していること。(当然、nullでないこと)

    引数

    • opts -- 内部メモリプール設定を指定するpool_optionsオブジェクト
    • upstream -- 利用したい上流memory_resourceへのポインタ

    効果

    • (1) : 内部のメモリプールをopts設定により調整し、上流メモリリソースとしてupstreamを利用するpool_resourceを構築する。
    • (2) : デフォルト設定を使用し、 get_default_resource()から上流メモリリソースを取得して構築。
    • (3) : デフォルト設定を使用し、上流メモリリソースとしてupstreamを利用するpool_resourceを構築する。
    • (4) : 内部のメモリプールをopts設定により調整し、get_default_resource()から上流メモリリソースを取得して構築。

    例外

    upstream->allocate()例外を投げないのならば、すべてのコンストラクタは例外を投げない。
    ただし、これらのコンストラクタがupstream->allocate()を呼び出すかどうか、またはどの様な条件の下でupstream->allocate()を呼び出すかは未規定

    備考

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

    実装は必ずしもoptsの設定を利用しない。

    以下ではsynchronized_pool_resourceで書いてあるが、unsynchronized_pool_resourceも同様。

    #include <memory_resource>
    
    int main() {
      //(1) pool_optionsと上流メモリリソースを受けて構築
      {
        std::pmr::synchronized_pool_resource mr{ {1024, 4096}, std::pmr::new_delete_resource() };
      }
    
      //(2) デフォルト構築
      {
        std::pmr::synchronized_pool_resource mr{};
      }
    
      //(3) 上流メモリリソースだけを受けて構築
      {
        std::pmr::monotonic_buffer_resource mono_mr{};
        std::pmr::synchronized_pool_resource mr{ &mono_mr };
      }
    
      //(4) pool_optionsだけを受けて構築
      {
        std::pmr::synchronized_pool_resource mr{ {4096, 4096} };
      }
    }
    

    出力

    バージョン

    言語

    • C++17

    処理系

    関連項目

    参照