[[nodiscard] static constexpr
allocation_result<pointer, size_type>
allocate_at_least(Alloc& a, size_type n); // (1) C++23
概要
指定した要素数以上のメモリを確保する。
多くのメモリアロケータはメモリ確保時に指定されたサイズちょうどではなく、少し大きなサイズを確保する。この関数は、確保されたメモリへのポインタに加えて、実際に確保されたメモリサイズを取得できる。
戻り値
式a.allocate_at_least(n)
が妥当である場合、それを呼び出して返す。そうでなければ、{a.allocate(n), n}
を返す。
例
#include <iostream>
#include <memory>
int main() {
std::allocator<int> alloc;
using traits = std::allocator_traits<std::allocator<int>>;
std::allocation_result<int*> r = traits::allocate_at_least(alloc, 3);
std::cout << "allocation count:" << r.count
<< " bytes:" << sizeof(int) * r.count
<< std::endl;
alloc.deallocate(r.ptr, r.count);
}
出力例
allocation count:4 bytes:16
バージョン
言語
- C++23
処理系
- Clang: 19 ❌
- GCC: 14 ❌
- Visual C++: 2022 Update 10 ❌