std::pmr::polymorphic_allocator<T>::allocate
< cpp | memory | polymorphic allocator
T* allocate( std::size_t n ); |
(C++17 起) (C++20 前) |
|
[[nodiscard]] T* allocate( std::size_t n ); |
(C++20 起) | |
用底层的 memory_resource 分配 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++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3038 | C++17 | allocate 可能分配大小错误的存储
|
替而抛出 length_error
|
LWG 3237 | C++17 | allocate 所抛的异常与 std::allocator::allocate 不一致
|
使之一致 |
参阅
[静态] |
用分配器分配未初始化的存储 ( std::allocator_traits<Alloc> 的公开静态成员函数) |
分配内存 ( std::pmr::memory_resource 的公开成员函数) |