C++ 参考手册

位置:首页 > C++ 参考手册 >动态内存管理 >std::pmr::polymorphic_allocator > std::pmr::polymorphic_allocator<T>::allocate

T* allocate( std::size_t n );
(C++17 起)
(C++20 前)
[[nodiscard]] T* allocate( std::size_t n );
(C++20 起)

用底层的 memory_resource 分配 nT 类型对象的存储。等价于 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 的公开成员函数)