std::allocator<T>::allocate
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (1) | ||
pointer allocate( size_type n, const void * hint = 0 ); |
(C++17未満) | |
T* allocate( std::size_t n, const void * hint); |
(C++17以上) (非推奨) (C++20で削除) |
|
| (2) | ||
T* allocate( std::size_t n ); |
(C++17以上) (C++20未満) |
|
[[nodiscard]] constexpr T* allocate( std::size_t n ); |
(C++20以上) | |
::operator new(std::size_t) または ::operator new(std::size_t, std::align_val_t) (C++17以上) を呼ぶことによって n * sizeof(T) バイトの未初期化記憶域を確保しますが、それらの関数がいつどのように呼ばれるかは未規定です。 ポインタ hint は参照の局所性を提供するために使用することができます。 実装がサポートしている場合、アロケータは hint に可能な限り近い新しいメモリブロックの確保を試みます。
引数
| n | - | 記憶域を確保するオブジェクト数 |
| hint | - | 付近のメモリ位置を指すポインタ |
戻り値
T 型のオブジェクト n 個の配列を保持するのに十分な適切にアラインされたメモリブロックの最初のバイトを指すポインタ。
例外
確保に失敗した場合は std::bad_alloc を投げます。
ノート
「いつどのように呼ばれるかは未規定」という文言は、 ::operator new の直接呼び出しに対してはできないヒープ確保の結合または最適化を標準ライブラリが行うことを可能とします。 例えば、これは libc++ ([1] および [2]) で実装されています。
関連項目
[静的] |
アロケータを使用して未初期化記憶域を確保します ( std::allocator_traits<Alloc>のパブリック静的メンバ関数)
|