std::allocator_traits<Alloc>::allocate
| Definiert in 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, um n * sizeof(Alloc::value_type) Bytes uninitialisierten Speicher zuzuweisen. Im Speicher wird ein Array vom Typ Alloc::value_type[n] erstellt, aber keines seiner Elemente wird konstruiert.
Inhalt |
[bearbeiten] Parameter
| a | - | zu verwendender Allokator |
| n | - | die Anzahl der Objekte, für die Speicher allokiert werden soll |
| hint | - | Zeiger auf eine nahegelegene Speicheradresse |
[bearbeiten] Rückgabewert
Der von dem Aufruf von a.allocate(n) zurückgegebene Zeiger.
[bearbeiten] Anmerkungen
Bis P0593R6 musste `Alloc::allocate` kein Array-Objekt erstellen, was die Verwendung von Nicht-Standard-Allokatoren für std::vector und einige andere Container gemäß einer strengen Auslegung der Kernsprachenspezifikation nicht gut definiert machte.
Nach dem Aufruf von `allocate` und vor der Konstruktion von Elementen ist die Zeigerarithmetik von Alloc::value_type* innerhalb des zugewiesenen Arrays wohldefiniert. Das Verhalten ist jedoch undefiniert, wenn auf Elemente zugegriffen wird.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| alloziiert uninitialisierten Speicher (public member function of std::allocator<T>) |