std::allocator_traits<Alloc>::allocate
来自 cppreference.cn
< cpp | memory | allocator traits
定义于头文件 <memory> |
||
static pointer allocate( Alloc& a, size_type n ); |
(1) | (since C++11) (constexpr since C++20) |
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(2) | (since C++11) (constexpr since C++20) |
使用分配器 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)。目录 |
[edit] 参数
a | - | 要使用的分配器 |
n | - | 要为其分配存储的对象数量 |
hint | - | 指向附近内存位置的指针 |
[edit] 返回值
调用 a.allocate(n) 返回的指针。
[edit] 注释
在 P0593R6 之前,Alloc::allocate
不需要创建数组对象,这使得根据核心语言规范的严格解读,对 std::vector 和某些其他容器使用非默认分配器的行为定义不明确。
在调用 allocate
之后和构造元素之前,Alloc::value_type* 的指针算术在已分配的数组中是明确定义的,但如果访问元素,则行为未定义。
[edit] 示例
本节尚不完整 原因:没有示例 |
[edit] 参见
分配未初始化的存储 (std::allocator<T> 的公共成员函数) |