std::pmr::polymorphic_allocator<T>::allocate
来自 cppreference.cn
< cpp | memory | polymorphic allocator
T* allocate( std::size_t n ); |
(自 C++17 起) | |
使用底层内存资源为 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 不一致 |
已变得一致 |
[编辑] 参见
(C++20) |
从底层资源分配原始对齐内存 (公共成员函数) |
(C++20) |
分配适用于对象或数组的原始内存 (公共成员函数) |
(C++20) |
分配和构造对象 (公共成员函数) |
[静态] |
使用分配器分配未初始化的存储空间 ( std::allocator_traits<Alloc> 的公共静态成员函数) |
分配内存 ( std::pmr::memory_resource 的公共成员函数) |