Namespaces
Variants

std::allocator_traits<Alloc>:: allocate_at_least

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
static constexpr std:: allocation_result < pointer, size_type >
allocate_at_least ( Alloc & a, size_type n ) ;
(C++23 起)

allocate_at_least 调用 a. allocate_at_least ( n ) 并返回其结果(若该调用格式正确),否则等效于 return { a. allocate ( n ) , n } ;

allocator_at_least 尝试为至少 n value_type 对象分配存储空间,并提供为精确 n 个对象分配存储空间的回退机制。

目录

参数

a - 用于分配存储空间的分配器
n - 要为其分配存储空间的对象数量的下限

返回值

a. allocate_at_least ( n ) 如果它是良构的。

否则, std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n }

异常

抛出什么以及何时选择的分配函数会抛出异常。

注释

Allocator 类型的 allocate_at_least 成员函数主要为连续容器设计,例如 std::vector std::basic_string ,通过使其容量在可能时匹配实际分配大小来减少重新分配。由于 allocate_at_least 提供了回退机制,可在适当场景中直接使用。

给定类型为 Alloc 的分配器对象 a ,令 result 表示从 std:: allocator_traits < Alloc > :: allocate_at_least ( a, n ) 返回的值,该存储空间应当通过 a. deallocate ( result. ptr , m ) (通常通过 std:: allocator_traits < Alloc > :: deallocate ( a, result. ptr , m ) 调用)进行释放,以避免内存泄漏。

用于释放的实参 m 必须不小于 n 且不大于 result. count ,否则行为未定义。请注意,若分配器未提供 allocate_at_least ,则 n 始终等于 result. count ,这意味着 m 必须等于 n

功能测试 标准 功能
__cpp_lib_allocate_at_least 202302L (C++23) allocate_at_least

示例

参见

分配至少不小于请求大小的未初始化存储
( std::allocator<T> 的公开成员函数)