名稱空間
變體
操作

記憶體管理庫

來自 cppreference.com
< cpp
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(C++17)
(C++17)
(C++17)
受約束的未初始化
記憶體演算法
C 庫

分配器
記憶體資源
垃圾回收支援
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化儲存
(直到 C++20*)
(直到 C++20*)
顯式生命週期管理
 

目錄

[編輯] 智慧指標 (自 C++11 起)

智慧指標實現了自動的、異常安全的、物件生命週期管理。

定義於標頭檔案 <memory>
指標類別
具有唯一物件所有權語義的智慧指標
(類模板) [編輯]
具有共享物件所有權語義的智慧指標
(類模板) [編輯]
(C++11)
對由 std::shared_ptr 管理的物件的弱引用
(類模板) [編輯]
(C++11 中已廢棄)(C++17 中已移除)
具有嚴格物件所有權語義的智慧指標
(類模板) [編輯]
輔助類
提供基於所有者的共享指標和弱指標的混合型別排序
(類模板) [編輯]
為共享指標和弱指標提供基於所有者的雜湊
(類) [編輯]
提供基於所有者的共享指標和弱指標的混合型別相等比較
(類) [編輯]
允許物件建立指向自身的 shared_ptr
(類模板) [編輯]
當訪問指向已銷燬物件的 weak_ptr 時丟擲的異常
(類) [編輯]
unique_ptr 的預設刪除器
(類模板) [編輯]
智慧指標介面卡 (自 C++23 起)
(C++23)
與外部指標設定器互動,並在銷燬時重置智慧指標
(類模板) [編輯]
(C++23)
建立帶有相關智慧指標和重置引數的 out_ptr_t
(函式模板) [編輯]
與外部指標設定器互動,從智慧指標獲取初始指標值,並在銷燬時重置它
(類模板) [編輯]
(C++23)
建立一個帶有關聯智慧指標和重置引數的 inout_ptr_t
(函式模板) [編輯]

[編輯] 分配器

分配器是封裝記憶體分配策略的類模板。這使得通用容器能夠將記憶體管理與資料本身分離。

定義於標頭檔案 <memory>
預設分配器
(類模板) [編輯]
提供關於分配器型別的資訊
(類模板) [編輯]
記錄 allocate_at_least 分配的儲存地址和實際大小
(類模板) [編輯]
用於選擇分配器感知建構函式的標記
(標籤)[編輯]
檢查指定型別是否支援 uses-allocator 構造
(類模板) [編輯]
準備與給定型別所需的使用分配器構造方式匹配的引數列表
(函式模板) [編輯]
透過 uses-allocator 構造建立給定型別的物件
(函式模板) [編輯]
透過使用分配器構造在指定記憶體位置建立給定型別的物件
(函式模板) [編輯]
定義於標頭檔案 <scoped_allocator>
為多層容器實現多層分配器
(類模板) [編輯]
定義於標頭檔案 <memory_resource>
定義在名稱空間 std::pmr
一個支援基於其構造的 std::pmr::memory_resource 的執行時多型性的分配器
(類模板) [編輯]

[編輯] 記憶體資源 (自 C++17 起)

記憶體資源實現了記憶體分配策略,可由 std::pmr::polymorphic_allocator 使用。

定義於標頭檔案 <memory_resource>
定義在名稱空間 std::pmr
封裝記憶體資源的類的抽象介面
(類) [編輯]
返回一個靜態的、程式範圍的 std::pmr::memory_resource,它使用全域性的 operator newoperator delete 來分配和釋放記憶體
(函式) [編輯]
返回一個靜態的 std::pmr::memory_resource,它不執行任何分配
(函式) [編輯]
獲取預設的 std::pmr::memory_resource
(函式) [編輯]
設定預設的 std::pmr::memory_resource
(函式) [編輯]
池資源的一組建構函式選項
(類) [編輯]
一種執行緒安全的 std::pmr::memory_resource,用於管理不同塊大小池中的分配
(類) [編輯]
一種執行緒不安全的 std::pmr::memory_resource,用於管理不同塊大小池中的分配
(類) [編輯]
一種特殊用途的 std::pmr::memory_resource,只在資源被銷燬時釋放分配的記憶體
(類) [編輯]

[編輯] 未初始化儲存 (直到 C++17)

提供了幾個用於建立和訪問原始儲存的實用程式。

定義於標頭檔案 <memory>
(在 C++17 中已棄用)(在 C++20 中已移除)
一個迭代器,允許標準演算法將結果儲存在未初始化記憶體中
(類模板) [編輯]
(在 C++17 中已棄用)(在 C++20 中已移除)
獲取未初始化儲存
(函式模板) [編輯]
(在 C++17 中已棄用)(在 C++20 中已移除)
釋放未初始化儲存
(函式模板) [編輯]

[編輯] 未初始化記憶體演算法

定義於標頭檔案 <memory>
將物件範圍複製到未初始化記憶體區域
(函式模板) [編輯]
將一定數量的物件複製到未初始化記憶體區域
(函式模板) [編輯]
將物件複製到由範圍定義的未初始化記憶體區域
(函式模板) [編輯]
將物件複製到由起始和計數定義的未初始化記憶體區域
(函式模板) [編輯]
將一系列物件移動到未初始化記憶體區域
(函式模板) [編輯]
將多個物件移動到未初始化記憶體區域
(函式模板) [編輯]
透過預設初始化在由範圍定義的未初始化記憶體區域中構造物件
(函式模板) [編輯]
在由起始和計數定義的未初始化記憶體區域中,透過預設初始化構造物件
(函式模板) [編輯]
在由範圍定義的未初始化記憶體區域中,透過值初始化構造物件
(函式模板) [編輯]
在由起始和計數定義的未初始化記憶體區域中,透過值初始化構造物件
(函式模板) [編輯]
銷燬給定地址處的物件
(函式模板) [編輯]
(C++17)
銷燬物件範圍
(函式模板) [編輯]
(C++17)
銷燬範圍內的多個物件
(函式模板) [編輯]
在給定地址建立物件
(函式模板) [編輯]

[編輯] 受限未初始化記憶體演算法 (自 C++20 起)

C++20 提供了接受範圍引數或迭代器-哨兵對的受限未初始化記憶體演算法。

定義於標頭檔案 <memory>
定義於名稱空間std::ranges
指定迭代器、哨兵和範圍上的某些操作不丟擲異常
(僅供說明的概念*)
將物件範圍複製到未初始化記憶體區域
(演算法函式物件)[編輯]
將一定數量的物件複製到未初始化記憶體區域
(演算法函式物件)[編輯]
將物件複製到由範圍定義的未初始化記憶體區域
(演算法函式物件)[編輯]
將物件複製到由起始和計數定義的未初始化記憶體區域
(演算法函式物件)[編輯]
將一系列物件移動到未初始化記憶體區域
(演算法函式物件)[編輯]
將多個物件移動到未初始化記憶體區域
(演算法函式物件)[編輯]
透過預設初始化在由範圍定義的未初始化記憶體區域中構造物件
(演算法函式物件)[編輯]
透過預設初始化在由起始和計數定義的未初始化記憶體區域中構造物件
(演算法函式物件)[編輯]
在由範圍定義的未初始化記憶體區域中,透過值初始化構造物件
(演算法函式物件)[編輯]
在由起始和計數定義的未初始化記憶體區域中,透過值初始化構造物件
(演算法函式物件)[編輯]
銷燬給定地址處的物件
(演算法函式物件)[編輯]
銷燬物件範圍
(演算法函式物件)[編輯]
銷燬範圍內的多個物件
(演算法函式物件)[編輯]
在給定地址建立物件
(演算法函式物件)[編輯]

[編輯] 垃圾回收器支援 (直到 C++23)

定義於標頭檔案 <memory>
(C++11)(在 C++23 中已移除)
宣告一個物件不能被回收
(函式) [編輯]
(C++11)(在 C++23 中已移除)
宣告一個物件可以被回收
(函式模板) [編輯]
(C++11)(在 C++23 中已移除)
宣告一個記憶體區域不包含可追溯指標
(函式) [編輯]
(C++11)(在 C++23 中已移除)
取消 std::declare_no_pointers 的效果
(函式) [編輯]
(C++11)(在 C++23 中已移除)
列出指標安全模型
(列舉) [編輯]
(C++11)(在 C++23 中已移除)
返回當前指標安全模型
(函式) [編輯]

[編輯] 顯式生命週期管理 (自 C++23 起)

定義於標頭檔案 <memory>
在給定儲存中隱式建立物件,並重用物件表示
(函式模板) [編輯]

[編輯] 雜項

定義於標頭檔案 <memory>
提供有關類指標型別的資訊
(類模板) [編輯]
從類指標型別獲取原始指標
(函式模板) [編輯]
(C++11)
獲取物件的實際地址,即使 & 運算子被過載
(函式模板) [編輯]
(C++11)
在緩衝區中對齊指標
(函式) [編輯]
通知編譯器指標已對齊
(函式模板) [編輯]
檢查指標是否指向對齊值至少為給定值的物件
(函式模板) [編輯]

[編輯] 低階記憶體管理

包括例如 operator newoperator deletestd::set_new_handler

定義於標頭檔案 <new>

[編輯] C 風格記憶體管理

包括例如 std::mallocstd::free

定義於標頭檔案 <cstdlib>