命名空间
变体
操作

std::allocator_traits<Alloc>::allocate

来自 cppreference.cn
 
 
内存管理库
(仅为说明目的*)
未初始化内存算法
(C++17)
(C++17)
(C++17)
受约束的未初始化
内存算法
C 库

分配器
内存资源
垃圾回收支持
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
未初始化存储
(until C++20*)
(until C++20*)
显式生命周期管理
 
 
定义于头文件 <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> 的公共成员函数) [edit]