Namespaces
Variants

std::allocator_traits<Alloc>:: allocate

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)
ヘッダーで定義 <memory>
static pointer allocate ( Alloc & a, size_type n ) ;
(1) (C++11以降)
(constexpr C++20以降)
static pointer allocate ( Alloc & a, size_type n, const_void_pointer hint ) ;
(2) (C++11以降)
(constexpr C++20以降)

アロケータ a を使用して n * sizeof ( Alloc :: value_type ) バイトの未初期化ストレージを割り当てます。型 Alloc :: value_type [ n ] の配列がストレージ内に作成されますが、その要素は一つも構築されません。

1) a. allocate ( n ) を呼び出す。
2) さらにメモリ局所性ヒント hint を渡します。可能な場合は a. allocate ( n, hint ) を呼び出します。不可能な場合(例: a が2引数のメンバー関数 allocate を持たない場合)、 a. allocate ( n ) を呼び出します。

目次

パラメータ

a - 使用するアロケータ
n - ストレージを割り当てるオブジェクトの数
hint - 近傍メモリ位置へのポインタ

戻り値

a. allocate ( n ) の呼び出しによって返されるポインタ。

注記

Alloc::allocate は、配列オブジェクトを作成する必要はありませんでしたが、 P0593R6 によって、コア言語仕様の厳密な解釈によれば、 std::vector やその他の一部のコンテナに対して非デフォルトアロケータを使用することが明確に定義されていませんでした。

allocate を呼び出した後、要素の構築前には、 Alloc :: value_type * のポインタ演算は割り当てられた配列内で well-defined ですが、要素にアクセスした場合の動作は未定義です。

関連項目

初期化されていない記憶域を割り当てる
( std::allocator<T> の公開メンバ関数)