名前空間
変種
操作

std::pmr::polymorphic_allocator<T>::allocate_object

提供: cppreference.com
 
 
動的メモリ管理
スマートポインタ
(C++11)
(C++11)
(C++11)
(C++17未満)
(C++11)
アロケータ
メモリリソース
未初期化記憶域
ガベージコレクションサポート
その他
(C++20)
(C++11)
(C++11)
C のライブラリ
低水準のメモリ管理
 
 
template< class U >
[[nodiscard]] U* allocate_object( std::size_t n = 1 );
(C++20以上)

ベースとなるメモリリソースを用いて U 型のオブジェクト n 個のための記憶域を確保します。

std::numeric_limits<std::size_t>::max() / sizeof(U) < n の場合は std::bad_array_new_length を投げます。 そうでなければ return static_cast<U*>(allocate_bytes(n * sizeof(U), alignof(U)) ); と同等です。

目次

[編集] 引数

n - 何個のオブジェクトのために記憶域を確保するか

[編集] 戻り値

確保された記憶域を指すポインタ。

[編集] ノート

この関数は完全特殊化されたアロケータ std::polymorphic_allocator<> で使用するために導入されましたが、 std::polymorphic_allocator<T> から std::polymorphic_allocator<U> に rebind する必要を回避するためのショートカットとして任意の特殊化で便利かもしれません。

U は推定されないため、この関数を呼ぶときはテンプレート引数として提供されなければなりません。

[編集] 例外

std::numeric_limits<std::size_t>::max() / sizeof(U) < n の場合は std::bad_array_new_length を投げます。 resource()->allocate の呼び出しによって投げられるあらゆる例外も投げる可能性があります。

[編集] 関連項目

ベースとなるリソースからアラインされた生メモリを確保します
(パブリックメンバ関数) [edit]
オブジェクトを確保および構築します
(パブリックメンバ関数) [edit]
メモリを確保します
(パブリックメンバ関数) [edit]
[静的]
アロケータを使用して未初期化記憶域を確保します
(std::allocator_traits<Alloc>のパブリック静的メンバ関数) [edit]
メモリを確保します
(std::pmr::memory_resourceのパブリックメンバ関数) [edit]