名前空間
変種
操作

動的メモリ管理

提供: cppreference.com
< cpp
 
 
 
動的メモリ管理
未初期化記憶域
(C++17)
ガベージコレクションサポート
その他
(C++20)
(C++11)
(C++11)
C のライブラリ
低水準のメモリ管理
 

目次

[編集] スマートポインタ

スマートポインタを使うと、オブジェクトの生存期間を、自動的に、例外安全に、管理できます。

ヘッダ <memory> で定義
ポインタ
唯一のオブジェクト所有権のセマンティクスを持つスマートポインタ
(クラステンプレート) [edit]
共有オブジェクト所有権のセマンティクスを持つスマートポインタ
(クラステンプレート) [edit]
(C++11)
std::shared_ptr によって管理されているオブジェクトへの弱参照
(クラステンプレート) [edit]
(C++17で削除)
厳格なオブジェクト所有権のセマンティクスを持つスマートポインタ
(クラステンプレート) [edit]
ヘルパークラス
shared_ptr と weak_ptr の混ざった型に対するオーナーベースの順序付けを提供します
(クラステンプレート) [edit]
自身を参照する shared_ptr の作成を可能にします
(クラステンプレート) [edit]
すでに破壊されたオブジェクトを参照する weak_ptr にアクセスしたとき投げられる例外
(クラス) [edit]
unique_ptr のためのデフォルトのデリータ
(クラステンプレート) [edit]

[編集] アロケータ

アロケータはメモリ確保戦略をカプセル化するクラステンプレートです。 これにより汎用コンテナはデータ自身からメモリ管理を切り離せます。

ヘッダ <memory> で定義
デフォルトのアロケータ
(クラステンプレート) [edit]
アロケータ型に関する情報を提供します
(クラステンプレート) [edit]
アロケータ対応のコンストラクタのオーバーロードを選択するために使用されるタグ型
(クラス) [edit]
アロケータ対応のコンストラクタを選択するために使用される std::allocator_arg_t 型のオブジェクト
(定数) [edit]
指定された型が uses-allocator 構築をサポートしているかどうか調べます
(クラステンプレート) [edit]
ヘッダ <scoped_allocator> で定義
多段コンテナのための多段アロケータを実装します
(クラステンプレート) [edit]
ヘッダ <memory_resource> で定義
名前空間 pmr で定義
構築時に指定された std::memory_resource をベースとした実行時ポリモーフィズムをサポートするアロケータ
(クラステンプレート) [edit]

[編集] メモリリソース

メモリリソースは std::pmr::polymorphic_allocator によって使用されるメモリ確保戦略を実装します。

ヘッダ <memory_resource> で定義
名前空間 pmr で定義
メモリリソースをカプセル化するクラスへの抽象インタフェース
(クラス) [edit]
グローバルな operator newoperator delete を使用してメモリの確保および解放を行う static でプログラムワイドな std::pmr::memory_resource を返します
(関数) [edit]
確保を行わない static な std::pmr::memory_resource を返します
(関数) [edit]
デフォルトの std::pmr::memory_resource を取得します
(関数) [edit]
デフォルトの std::pmr::memory_resource を設定します
(関数) [edit]
プールリソースのためのコンストラクタオプションの集合
(クラス) [edit]
様々なブロックサイズのプールでメモリ確保を管理するスレッドセーフな std::pmr::memory_resource
(クラス) [edit]
様々なブロックサイズのプールでメモリ確保を管理するスレッドセーフでない std::pmr::memory_resource
(クラス) [edit]
リソースが破壊された場合にのみ確保されたメモリを解放する特殊な目的の std::pmr::memory_resource
(クラス) [edit]

[編集] 未初期化記憶域

生の記憶域を作成したりアクセスしたりするためのユーティリティがいくつか提供されます。

ヘッダ <memory> で定義
指定範囲のオブジェクトをメモリの未初期化領域にコピーします
(関数テンプレート) [edit]
指定個数のオブジェクトをメモリの未初期化領域にコピーします
(関数テンプレート) [edit]
1個のオブジェクトをメモリの未初期化領域の指定範囲にコピーします
(関数テンプレート) [edit]
1個のオブジェクトをメモリの未初期化領域に指定個数コピーします
(関数テンプレート) [edit]
指定範囲のオブジェクトをメモリの未初期化領域にムーブします
(関数テンプレート) [edit]
指定個数のオブジェクトをメモリの未初期化領域にムーブします
(関数テンプレート) [edit]
オブジェクトをデフォルト初期化によりメモリの未初期化領域の指定範囲に構築します
(関数テンプレート) [edit]
オブジェクトをデフォルト初期化によりメモリの未初期化領域に指定個数構築します
(関数テンプレート) [edit]
オブジェクトを値初期化によりメモリの未初期化領域の指定範囲に構築します
(関数テンプレート) [edit]
オブジェクトを値初期化によりメモリの未初期化領域に指定個数構築します
(関数テンプレート) [edit]
指定されたアドレスにあるオブジェクトを破棄します
(関数テンプレート) [edit]
(C++17)
指定範囲のオブジェクトを破棄します
(関数テンプレート) [edit]
(C++17)
指定個数のオブジェクトを破棄します
(関数テンプレート) [edit]
(C++17で非推奨)(C++20で削除)
標準アルゴリズムで未初期化メモリに結果を格納できるようにするイテレータ
(クラステンプレート) [edit]
(C++17で非推奨)(C++20で削除)
未初期化記憶域を取得します
(関数テンプレート) [edit]
(C++17で非推奨)(C++20で削除)
未初期化記憶域を解放します
(関数テンプレート) [edit]

[編集] ガベージコレクションサポート

ヘッダ <memory> で定義
オブジェクトが回収できないことを宣言します
(関数) [edit]
オブジェクトが回収できることを宣言します
(関数テンプレート) [edit]
メモリ領域に追跡可能なポインタが含まれていないことを宣言します
(関数) [edit]
std::declare_no_pointers の効果を取り消します
(関数) [edit]
ポインタ安全性モデルを表します
(列挙) [edit]
現在のポインタ安全性モデルを返します
(関数) [edit]

[編集] その他

ヘッダ <memory> で定義
ポインタライクな型に関する情報を提供します
(クラステンプレート) [edit]
ポインタライクな型から生のポインタを取得します
(関数テンプレート) [edit]
(C++11)
& 演算子がオーバーロードされている場合でも、オブジェクトの実際のアドレスを取得します
(関数テンプレート) [edit]
(C++11)
バッファ内のポインタをアライメント調整します
(関数) [edit]

[編集] C スタイルのメモリ管理

std::malloc, std::free など。

[編集] 低水準のメモリ管理

operator new , operator delete , std::set_new_handler など。