命名空间
变体
操作

std::allocator_traits<Alloc>::allocate

来自 cppreference.com
 
 
动态内存管理
未初始化内存算法
受限未初始化内存算法
分配器
垃圾收集支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)



 
 
在头文件 <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::allocateP0593R6 之前,并不需要创建数组对象,这使得对于 std::vector 和其他一些容器使用非默认分配器,根据核心语言规范的严格解读,是不确定的。

在调用 allocate 之后,但在构造元素之前,对 Alloc::value_type* 进行指针运算,在分配的数组中是确定的,但如果访问元素,则行为是未定义的。

[编辑] 示例

[编辑] 另请参阅

分配未初始化的存储空间
(std::allocator<T> 的公有成员函数) [编辑]