命名空间
变体
操作

std::allocator_traits<Alloc>::allocate

来自 cppreference.cn
 
 
内存管理库
(仅作说明*)
未初始化内存算法
(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> 的公开成员函数) [编辑]