C++/標準ライブラリ/memory resource
表示
<memory_resource>ヘッダーは、カスタマイズ可能なメモリ割当ポリシーを提供するためのインターフェイスをC++に導入しています。主な機能は以下の通りです。
memory_resourceクラス
[編集]- メモリ確保・解放のインターフェースを定義する抽象基底クラス
- 仮想関数
do_allocate、do_deallocateを派生クラスで実装する
polymorphic_allocatorクラステンプレート
[編集]memory_resourceを使ってメモリ確保・解放を行うアロケータ- 実行時に
memory_resourceを切り替えることができる
グローバルメモリリソース
[編集]new_delete_resource():::operator new/delete用のリソースnull_memory_resource(): 常に割り当てに失敗するリソースget_default_resource()、set_default_resource(): デフォルトのリソースの取得・設定
プールリソースクラス
[編集]synchronized_pool_resource、unsynchronized_pool_resource- メモリをプールから効率的に確保・解放するリソース
- アップストリームアロケータからメモリチャンクを取得してプールを構築
- マルチスレッド/シングルスレッド向けの2つのバージョン
monotonic_buffer_resource
[編集]- 単調増加のメモリ使用を前提としたリソース
- 解放されるまでメモリ使用量が増え続ける
- 一時的なバッファ用途に適している
このヘッダーでは、カスタムのメモリ割当ポリシーを実装したmemory_resourceの派生クラスを作成することができます。標準ライブラリ内のコンテナなどはpolymorphic_allocatorを使って、そのようなカスタムアロケータを利用可能です。メモリ確保のカスタマイズ性が大幅に向上しています。