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)
Definiert im Header <memory>
static pointer allocate ( Alloc & a, size_type n ) ;
(1) (seit C++11)
(constexpr seit C++20)
static pointer allocate ( Alloc & a, size_type n, const_void_pointer hint ) ;
(2) (seit C++11)
(constexpr seit C++20)

Verwendet den Allokator a zur Allokation von n * sizeof ( Alloc :: value_type ) Bytes nicht initialisierten Speichers. Ein Array vom Typ Alloc :: value_type [ n ] wird im Speicher erstellt, jedoch werden keine seiner Elemente konstruiert.

1) Ruft a. allocate ( n ) auf.
2) Übermittelt zusätzlich einen Speicherlokalitätshinweis hint . Ruft a. allocate ( n, hint ) auf, falls möglich. Falls nicht möglich (z.B. wenn a keine zweistellige Memberfunktion allocate besitzt), ruft a. allocate ( n ) auf.

Inhaltsverzeichnis

Parameter

a - zu verwendender Allokator
n - Anzahl der Objekte, für die Speicher allokiert werden soll
hint - Zeiger auf einen nahegelegenen Speicherbereich

Rückgabewert

Der von dem Aufruf von a. allocate ( n ) zurückgegebene Zeiger.

Hinweise

Alloc::allocate war nicht verpflichtet, Array-Objekte zu erstellen, bis P0593R6 , wodurch die Verwendung eines nicht-standardmäßigen Allokators für std::vector und einige andere Container gemäß einer strengen Auslegung der Kernsprachspezifikation nicht wohldefiniert war.

Nach dem Aufruf von allocate und vor der Konstruktion der Elemente ist die Zeigerarithmetik von Alloc :: value_type * innerhalb des allokierten Arrays wohldefiniert, aber das Verhalten ist undefiniert, wenn auf Elemente zugegriffen wird.

Beispiel

Siehe auch

weist nicht initialisierten Speicher zu
(öffentliche Elementfunktion von std::allocator<T> )