Skip to content

Latest commit

 

History

History
152 lines (123 loc) · 15.6 KB

memory.md

File metadata and controls

152 lines (123 loc) · 15.6 KB

memory

  • memory[meta header]

<memory>ヘッダでは、メモリアロケータ、未初期化領域に関する関数群、スマートポインタ、ガベージコレクションを作るためのユーティリティ関数といった、メモリを扱うための機能を定義する。

このヘッダでは、以下の標準ヘッダをインクルードする:

メモリアロケータ

名前 説明 対応バージョン
allocator メモリアロケータの標準実装(class template)
allocator_traits アロケータクラスへの間接的なアクセス(class template) C++11
allocation_result allocate_at_least()関数の戻り値型 C++23
allocator_arg_t アロケータを引数として渡す際の、オーバーロード解決のためのタグ(class) C++11
allocator_arg アロケータを引数として渡す際の、オーバーロード解決のためのタグ(constant value) C++11
uses_allocator Tがアロケータを使用するか調べる C++11
uses_allocator_construction_args uses-allocator 構築のためのコンストラクタ引数を tuple 型にして返す C++20
make_obj_using_allocator uses-allocator 構築する C++20
uninitialized_construct_using_allocator 指定された領域に uses-allocator 構築する C++20

メモリ特化のコンセプト

名前 説明 対応バージョン
no-throw-input-iterator 各操作で例外送出をしない説明用の入力イテレータ (concept) C++20
no-throw-forward-iterator 各操作で例外送出をしない説明用の前方向イテレータ (concept) C++20
no-throw-sentinel 各操作で例外送出をしない説明用の番兵 (concept) C++20
no-throw-input-range 各操作で例外送出をしない入力Range (concept) C++20
no-throw-forward-range 各操作で例外送出をしない前方向Range (concept) C++20

未初期化領域に対する操作

名前 説明 対応バージョン
uninitialized_default_construct 未初期化領域の範囲の各要素をデフォルト構築する(function template) C++17
uninitialized_default_construct_n 未初期化領域の範囲のうち、先頭N個の要素をデフォルト構築する(function template) C++17
uninitialized_value_construct 未初期化領域の範囲の各要素配置を値構築する(function template) C++17
uninitialized_value_construct_n 未初期化領域の範囲のうち、先頭N個の要素を値構築する(function template) C++17
uninitialized_copy 未初期化領域の範囲を配置newで初期化してコピー出力する(function template)
uninitialized_copy_n 未初期化領域の範囲のうち、先頭N個の要素を配置newで初期化してコピー出力する(function template) C++11
uninitialized_move 未初期化領域の範囲を配置newで初期化してムーブ出力する(function template)
uninitialized_move_n 未初期化領域の範囲のうち、先頭N個の要素を配置newで初期化してムーブ出力する(function template) C++11
uninitialized_fill 未初期化領域の範囲を、指定された値で配置newする(function template)
uninitialized_fill_n 未初期化領域の範囲のうち、先頭N個の要素を指定された値で配置newする(function template)
construct_at コンストラクタを呼び出す(function template) C++20
destroy_at デストラクタを呼び出す(function template) C++17
destroy 範囲の各要素に対してデストラクタを呼び出す(function template) C++17
destroy_n 範囲のうち、先頭N個の要素に対してデストラクタを呼び出す(function template) C++17
ranges::uninitialized_default_construct 未初期化領域の範囲の各要素をデフォルト構築する(function template) C++20
ranges::uninitialized_default_construct_n 未初期化領域の範囲のうち、先頭N個の要素をデフォルト構築する(function template) C++20
ranges::uninitialized_value_construct 未初期化領域の範囲の各要素配置を値構築する(function template) C++20
ranges::uninitialized_value_construct_n 未初期化領域の範囲のうち、先頭N個の要素を値構築する(function template) C++20
ranges::uninitialized_copy 未初期化領域の範囲を配置newで初期化してコピー出力する(function template) C++20
ranges::uninitialized_copy_n 未初期化領域の範囲のうち、先頭N個の要素を配置newで初期化してコピー出力する(function template) C++20
ranges::uninitialized_move 未初期化領域の範囲を配置newで初期化してムーブ出力する(function template) C++20
ranges::uninitialized_move_n 未初期化領域の範囲のうち、先頭N個の要素を配置newで初期化してムーブ出力する(function template) C++20
ranges::uninitialized_fill 未初期化領域の範囲を、指定された値で配置newする(function template) C++20
ranges::uninitialized_fill_n 未初期化領域の範囲のうち、先頭N個の要素を指定された値で配置newする(function template) C++20
ranges::construct_at コンストラクタを呼び出す(function template) C++20
ranges::destroy_at デストラクタを呼び出す(function template) C++20
ranges::destroy 範囲の各要素に対してデストラクタを呼び出す(function template) C++20
ranges::destroy_n 範囲のうち、先頭N個の要素に対してデストラクタを呼び出す(function template) C++20
raw_storage_iterator 未初期化領域に書き込むための出力イテレータ(class template) C++17から非推奨
C++20で削除
get_temporary_buffer 短期的なメモリ領域を確保する(function template) C++17から非推奨
C++20で削除
return_temporary_buffer get_temporary_buffer()で確保された領域を解放する(function) C++17から非推奨
C++20で削除

スマートポインタ

名前 説明 対応バージョン
shared_ptr 共有方式スマートポインタ(class template) C++11
make_shared shared_ptrを構築するヘルパ関数(function template) C++11
make_shared_for_overwrite shared_ptrを構築するヘルパ関数(function template) C++20
allocate_shared アロケータを指定してshared_ptrを構築するヘルパ関数(function template) C++11
allocate_shared_for_overwrite アロケータを指定してshared_ptrを構築するヘルパ関数(function template) C++20
enable_shared_from_this thisを指すshared_ptrを可能にする(class template) C++11
weak_ptr shared_ptrのインスタンス監視(class template) C++11
bad_weak_ptr weak_ptrから投げられる例外クラス(class template) C++11
owner_less 所有権ベースの小なり比較(class template) C++11
unique_ptr 専有方式スマートポインタ(class template) C++11
make_unique unique_ptrを構築するヘルパ関数(function template) C++14
make_unique_for_overwrite unique_ptrを構築するヘルパ関数(function template) C++20
default_delete unique_ptrのデフォルトの削除子(class template) C++11
auto_ptr 古い専有方式スマートポインタ(class template) C++11から非推奨
C++17で削除

スマートポインタアダプタ

名前 説明 対応バージョン
out_ptr_t スマートポインタへの出力サポート(class template) C++23
out_ptr スマートポインタへの出力サポートヘルパ関数(function template) C++23
inout_ptr_t スマートポインタへの入出力サポート(class template) C++23
inout_ptr スマートポインタへの入出力サポートヘルパ関数(function template) C++23

スマートポインタのアトミック操作

名前 説明 対応バージョン
template<class T> struct atomic atomicクラスの先行宣言 (class template) C++20
template<class T> struct atomic<shared_ptr<T>>; atomicクラスのshared_ptrに対する特殊化 (class template) C++20
template<class T> struct atomic<weak_ptr<T>>; atomicクラスのweak_ptrに対する特殊化 (class template) C++20
atomic_is_lock_free shared_ptrに対するアトミック操作がロックフリーに振る舞うことができるかを調べる (function template) C++11
C++20で非推奨
atomic_load shared_ptrの値をアトミックに読み込む (function template) C++11
C++20で非推奨
atomic_load_explicit メモリオーダーを指定して、shared_ptrの値をアトミックに読み込む (function template) C++11
C++20で非推奨
atomic_store shared_ptr値をアトミックに書き込む (function template) C++11
C++20で非推奨
atomic_store_explicit メモリオーダーを指定して、shared_ptrの値をアトミックに書き込む (function template) C++11
C++20で非推奨
atomic_exchange shared_ptrの値をアトミックに入れ替える (function template) C++11
C++20で非推奨
atomic_exchange_explicit メモリオーダーを指定して、shared_ptrの値をアトミックに入れ替える (function template) C++11
C++20で非推奨
atomic_compare_exchange_weak 弱い比較でshared_ptrの値の入れ替えをアトミックに行う (function template) C++11
C++20で非推奨
atomic_compare_exchange_strong 強い比較でshared_ptrの値の入れ替えをアトミックに行う (function template) C++11
C++20で非推奨
atomic_compare_exchange_weak_explicit 弱い比較でメモリオーダーを指定して、shared_ptrの値の入れ替えをアトミックに行う (function template) C++11
C++20で非推奨
atomic_compare_exchange_strong_explicit 強い比較でメモリオーダーを指定して、shared_ptrの値の入れ替えをアトミックに行う (function template) C++11
C++20で非推奨

ガベージコレクション支援(C++23で削除)

名前 説明 対応バージョン
pointer_safety ポインタ安全性について実装/挙動を示す列挙型(enum class) C++11
C++23で削除
get_pointer_safety 処理系の、ポインタ安全性についての実装/挙動を取得する(function) C++11
C++23で削除
declare_reachable ポインタが到達可能であることを宣言する(function) C++11
C++23で削除
undeclare_reachable ポインタが到達可能であるという宣言を削除する(function template) C++11
C++23で削除
declare_no_pointers 指定された範囲のポインタが、追跡可能ではないことを宣言する(function) C++11
C++23で削除
undeclare_no_pointers declare_no_pointersで宣言された範囲を無効化する(function) C++11
C++23で削除

ポインタのユーティリティ

名前 説明 対応バージョン
pointer_traits ポインタの型特性(class template) C++11
to_address ポインタと見なせるオブジェクトからアドレスを取得する (function template) C++20
addressof 変数のアドレスを必ず取得する(function template) C++11
align アライメント調整された領域を得る(function) C++11
assume_aligned コンパイラへアライメントのヒントを与える(function template) C++20

参照