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 | - | 要分配存储空间的对象数量 |
[编辑] 返回值
指向已分配存储空间的指针。
[编辑] 异常
抛出 std::bad_array_new_length 如果 n > std::numeric_limits<std::size_t>::max() / sizeof(T); 也可能抛出调用 resource()->allocate 时抛出的任何异常。
[编辑] 缺陷报告
以下行为更改缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 发布的行为 | 正确的行为 |
---|---|---|---|
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 的公共成员函数) |