std::pmr::polymorphic_allocator<T>:: allocate
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
polymorphic_allocator::allocate
|
||||
|
(
C++20/26*
)
|
||||
| Non-member functions | ||||
|
(until C++20)
|
|
T
*
allocate
(
std::
size_t
n
)
;
|
(自 C++17 起) | |
为
n
个类型为
T
的对象分配存储空间,使用底层内存资源。等效于
return
static_cast
<
T
*
>
(
resource
(
)
-
>
allocate
(
n
*
sizeof
(
T
)
, alignof
(
T
)
)
)
;
。
目录 |
参数
| n | - | 要为分配存储空间的对象数量 |
返回值
指向已分配存储的指针。
异常
当 n > std:: numeric_limits < std:: size_t > :: max ( ) / sizeof ( T ) 时抛出 std::bad_array_new_length ;也可能抛出调用 resource ( ) - > allocate 时抛出的任何异常。
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
| 缺陷报告 | 适用范围 | 发布时的行为 | 修正后的行为 |
|---|---|---|---|
| LWG 3038 | C++17 |
allocate
可能分配错误大小的存储空间
|
改为抛出
length_error
|
| LWG 3237 | C++17 |
allocate
抛出的异常与
std::allocator::allocate
不一致
|
保持一致性 |
参见
|
(C++20)
|
从底层资源分配对齐的原始内存
(公开成员函数) |
|
(C++20)
|
分配适用于对象或数组的原始内存
(公开成员函数) |
|
(C++20)
|
分配并构造对象
(公开成员函数) |
|
[static]
|
使用分配器分配未初始化的存储空间
(
std::allocator_traits<Alloc>
的公开静态成员函数)
|
|
分配内存
(
std::pmr::memory_resource
的公开成员函数)
|