std::pmr::polymorphic_allocator<T>::allocate
自 C++20 起
[[nodiscard]] T* allocate( std::size_t n );
C++17 起,到 C++20 止
T* allocate( std::size_t n );
使用底层内存资源为 T 类型的 n
个对象分配存储空间。
等价于 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 不一致 | 已统一 |