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

履歴 編集

class
<memory_resource>

std::pmr::monotonic_buffer_resource(C++17)

namespace std::pmr {
  class monotonic_buffer_resource;
}

概要

monotonic_buffer_resourceはオブジェクトの破棄時にのみ管理しているメモリを全て開放する特殊な memory_resource実装である。
少さなオブジェクトを多数構築するために割り当てを行い、最後にまとめて開放するといった状況において高速なメモリ割り当てを行うことを目的としている。

このクラスはスレッドセーフではない。

monotonic_buffer_resourceの性質

  • deallocatedo_deallocate)は何も行わない、そのためオブジェクトの破棄までメモリ使用量は単調増加する。
  • 外部で確保された領域を初期メモリ領域として設定可能
  • 上流メモリリソースを指定可能
  • 初期メモリが無いか使い果たされると、上流メモリリソースから補充する。
  • 補充されるメモリ領域サイズは以前の領域サイズよりも大きくなり、そのサイズは等比数列に従って(補充の度に)増加する。
  • 単一スレッドからアクセスされることを前提としており、allocatedeallocateは互いに非同期である。
  • 管理メモリの解放時はdeallocateが呼び出されていない領域があっても全てのメモリを解放する。

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++17
(destructor) デストラクタ C++17
operator=(const monotonic_buffer_resource&) = delete; コピー代入演算子(コピー禁止) C++17

メンバ関数

名前 説明 対応バージョン
release 管理中の全てのメモリを解放する C++17
upstream_resource 利用している上流memory_resourceを取得する C++17

非仮想インターフェース(NVI)

名前 説明 対応バージョン
allocate メモリを確保する C++17
deallocate メモリを解放する C++17
is_equal オブジェクトを超えてメモリ領域の解放を行えるかを調べる C++17

protected オーバーライド関数(memory_resource実装)

名前 説明 対応バージョン
do_allocate メモリを確保する C++17
do_deallocate メモリを解放する C++17
do_is_equal オブジェクトを超えてメモリ領域の解放を行えるかを調べる C++17

非メンバ関数

名前 説明 対応バージョン
operator== 等値比較 C++17
operator!= 非等値比較 C++17

バージョン

言語

  • C++17

処理系

関連項目

参照