# std::pmr::polymorphic_allocator<T>::allocate_object

< cpp‎ | memory‎ | polymorphic allocator

template< class U > [[nodiscard]] U* allocate_object( std::size_t n = 1 ); |  | (C++20 起)

用底层内存资源分配 `n` 个 `U` 类型对象的存储。

若 std::numeric_limits<std::size_t>::max() / sizeof(U) < n ，则抛出 std::bad_array_new_length ，否则等价于 return static_cast<U*>(allocate_bytes(n * sizeof(U), alignof(U)) ); 。

### 参数

n | - | 要分配存储的对象数

### 返回值

指向分配的存储的指针。

### 注解

引入此函数是为了用于全特化分配器 std::polymorphic_allocator<> ，但它可能在任何特化中都有用，作为避免从 std::polymorphic_allocator<T> 重绑定到 std::polymorphic_allocator<U> 的快捷方式。

因为不推导 `U` ，调用此函数时必须提供它为模板实参。

### 异常

若 n > std::numeric_limits<std::size_t>::max() / sizeof(U) 则抛出 std::bad_array_new_length ；亦可能抛出任何调用 resource()->allocate 所抛的异常。

### 参阅

allocate_bytes (C++20) | 从底层资源分配未处理的对齐内存 (公开成员函数)
new_object (C++20) | 分配并创建对象 (公开成员函数)
allocate | 分配内存 (公开成员函数)
allocate [静态] | 用分配器分配未初始化的存储 (`std::allocator_traits<Alloc>` 的公开静态成员函数)
allocate | 分配内存 (`std::pmr::memory_resource` 的公开成员函数)