• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    <memory>

    memory

    <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で非推奨

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

    名前 説明 対応バージョン
    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
    is_sufficiently_aligned ポインタのアライメントを判定する(function template) C++26

    ガベージコレクション支援(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で削除

    参照