名稱空間
變體
操作

std::allocator_traits<Alloc>::allocate

來自 cppreference.com
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(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*)
顯式生命週期管理
 
 
定義於標頭檔案 <memory>
static pointer allocate( Alloc& a, size_type n );
(1) (C++11 起)
(C++20 起為 constexpr)
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint );
(2) (C++11 起)
(C++20 起為 constexpr)

使用分配器 a 來分配 n * sizeof(Alloc::value_type) 位元組的未初始化儲存。在儲存中建立 Alloc::value_type[n] 型別的陣列,但其元素均未被構造。

1) 呼叫 a.allocate(n)
2) 額外傳遞記憶體局域性提示 hint。若可能則呼叫 a.allocate(n, hint)。若不可能(例如 a 沒有帶二個引數的成員函式 allocate),則呼叫 a.allocate(n)

目錄

[編輯] 引數

a - 要使用的分配器
n - 要分配儲存的物件數量
hint - 指向附近記憶體位置的指標

[編輯] 返回值

呼叫 a.allocate(n) 所返回的指標。

[編輯] 注意

P0593R6 之前,Alloc::allocate 不被要求建立陣列物件,這導致根據對核心語言規範的嚴格解讀,為 std::vector 和一些其他容器使用非預設分配器是未定義行為。

在呼叫 allocate 之後、構造元素之前,Alloc::value_type* 的指標算術在已分配的陣列內是良定義的,但如果訪問元素,其行為是未定義的。

[編輯] 示例

[編輯] 參閱

分配未初始化的儲存
(std::allocator<T> 的公開成員函式) [編輯]