std::allocator_traits<Alloc>::allocate
来自 cppreference.cn
定义于头文件 <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> 的公开成员函数) |