【发布时间】:2021-11-04 22:47:34
【问题描述】:
根据cppref:
std::allocator<T>::allocate_at_least分配
count * sizeof(T)字节的未初始化存储,其中count是一个不小于n的未指定整数值,通过调用::operator new(额外的std::align_val_t参数可能是 提供),但未指定何时以及如何调用此函数。然后,此函数在存储中创建一个
T[count]类型的数组 并开始其生命周期,但不开始其任何生命周期 元素。
但是,我认为已经存在的std::allocator<T>::allocate 可以做同样的事情。
我们为什么需要 std::allocator<T>::allocate_at_least 在 C++23 中?
【问题讨论】:
-
我不确定,但我认为是为了提高内存分配和释放的效率。因为现在内存不需要完全等于请求的大小,它可以成为主内存页面大小的倍数(我猜?)。因此,我可以更轻松地分配或释放这些特定大小的内存。
-
至少这个返回实际大小。不过,我不确定这是否是它存在的主要原因。
标签: c++ performance standards allocator c++23