std::allocator_traits<Alloc>::allocate
来自 cppreference.com
< cpp | memory | allocator traits
在头文件 <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) 返回的指针。
[编辑] 注释
Alloc::allocate
在 P0593R6 之前,并不需要创建数组对象,这使得对于 std::vector 和其他一些容器使用非默认分配器,根据核心语言规范的严格解读,是不确定的。
在调用 allocate
之后,但在构造元素之前,对 Alloc::value_type* 进行指针运算,在分配的数组中是确定的,但如果访问元素,则行为是未定义的。
[编辑] 示例
此部分不完整 原因:没有示例 |
[编辑] 另请参阅
分配未初始化的存储空间 ( std::allocator<T> 的公有成员函数) |