- memory_resource[meta header]
- class[meta id-type]
- std::pmr[meta namespace]
- cpp17[meta cpp]
namespace std::pmr {
class monotonic_buffer_resource;
}
monotonic_buffer_resource
はオブジェクトの破棄時にのみ管理しているメモリを全て開放する特殊な memory_resource
実装である。
少数のオブジェクトを多数構築するために割り当てを行い、最後にまとめて開放するといった状況において高速なメモリ割り当てを行うことを目的としている。
このクラスはスレッドセーフではない。
deallocate
(do_deallocate
)は何も行わない、そのためオブジェクトの破棄までメモリ使用量は単調増加する。- 外部で確保された領域を初期メモリ領域として設定可能
- 上流メモリリソースを指定可能
- 初期メモリが無いか使い果たされると、上流メモリリソースから補充する。
- 補充されるメモリ領域サイズは以前の領域サイズよりも大きくなり、そのサイズは等比数列に従って(補充の度に)増加する。
- 単一スレッドからアクセスされることを前提としており、
allocate
とdeallocate
は互いに非同期である。 - 管理メモリの解放時は
deallocate
が呼び出されていない領域があっても全てのメモリを解放する。
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++17 |
(destructor) |
デストラクタ | C++17 |
operator=(const monotonic_buffer_resource&) = delete; |
コピー代入演算子(コピー禁止) | C++17 |
名前 | 説明 | 対応バージョン |
---|---|---|
release |
管理中の全てのメモリを解放する | C++17 |
upstream_resource |
利用している上流memory_resource を取得する |
C++17 |
名前 | 説明 | 対応バージョン |
---|---|---|
allocate |
メモリを確保する | C++17 |
deallocate |
メモリを解放する | C++17 |
is_equal |
オブジェクトを超えてメモリ領域の解放を行えるかを調べる | C++17 |
名前 | 説明 | 対応バージョン |
---|---|---|
do_allocate |
メモリを確保する | C++17 |
do_deallocate |
メモリを解放する | C++17 |
do_is_equal |
オブジェクトを超えてメモリ領域の解放を行えるかを調べる | C++17 |
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較 | C++17 |
operator!= |
非等値比較 | C++17 |
- C++17
- Clang: ??
- GCC: 9.1
- Visual C++: 2017 update 6