std::pmr::polymorphic_allocator<T>::allocate
来自cppreference.com
< cpp | memory | polymorphic allocator
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) |
分配并创建对象 (公开成员函数) |
[静态] |
用分配器分配未初始化的存储 ( std::allocator_traits<Alloc> 的公开静态成员函数) |
分配内存 ( std::pmr::memory_resource 的公开成员函数) |