Teilen über


allocator_base-Klasse

Definiert die Basisklasse und allgemeine Funktionen, die zum Erstellen einer benutzerdefinierten Zuweisung von einem Synchronisierungsfilter erforderlich sind.

Syntax

template <class Type, class Sync>
class allocator_base

Parameter

Typ
Der Elementtyp, die durch die Zuweisung zugeordnet wird.

Sync
Die Synchronisierungsrichtlinie für die Zuweisung: sync_none-Klasse, sync_per_container-Klasse, sync_per_thread-Klasse oder sync_shared-Klasse.

Konstruktoren

Konstruktor Beschreibung
allocator_base Konstruiert ein Objekt vom Typ allocator_base.

TypeDefs

Typname Beschreibung
const_pointer Ein Typ, der einen konstanten Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
const_reference Ein Typ, der einen konstanten Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
difference_type Ein ganzzahliger Typ mit Vorzeichen, der die Differenz zwischen Werten von Zeigern und dem Typ des Objekts, das von der Zuweisung verwaltet wird, darstellen kann.
pointer Ein Typ, der einen Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
reference Ein Typ, der einen Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
size_type Ein nicht signierter Integraltyp, der die Länge einer beliebigen Sequenz darstellen kann, die ein Objekt vom Typ allocator_base zuordnen kann.
value_type Ein Typ, der von der Zuweisung verwaltet wird.

Memberfunktionen

Memberfunktion Beschreibung
_Charalloc Ordnet einem Array des Typs char Speicherplatz zu.
_Chardealloc Gibt für das Array mit Elementen vom Typ char Speicherplatz frei.
address Sucht die Adresse eines Objekts, dessen Wert angegeben wird.
allocate Ordnet einen Speicherblock zu, der groß genug ist, um mindestens eine angegebene Anzahl von Elementen zu speichern.
construct Erstellt eine bestimmte Art von Objekt an einer bestimmten Adresse, die mit einem angegebenen Wert initialisiert wird.
deallocate Gibt eine angegebene Anzahl von Objekten im Speicher frei, beginnend an einer angegebenen Position.
destroy Ruft einen Objektdestruktor auf, ohne die Zuordnung des Speicherplatzes aufzuheben, an dem Objekt gespeichert wurde.
max_size Gibt die Anzahl der Elemente vom Typ Type zurück, die von einem Objekt der Klassenzuweisung zugeordnet werden konnten, bevor der freie Speicherplatz verbraucht ist.

Anforderungen

Header:<allocators>

Namespace: stdext

allocator_base::_Charalloc

Ordnet einem Array des Typs char Speicherplatz zu.

char *_Charalloc(size_type count);

Parameter

count
Die Anzahl der zuzuweisenden Elemente im Array

Rückgabewert

Zeiger auf das zugewiesene Objekt.

Hinweise

Diese Memberfunktion wird von Containern verwendet, wenn sie mit einem Compiler kompiliert werden, der nicht kompiliert werden kann. Es implementiert _Charalloc für die benutzerdefinierte allocator-Klasse, indem es das Ergebnis eines Aufrufs an die Funktion allocate des Synchronisationsfilters zurückgibt.

allocator_base::_Chardealloc

Gibt für das Array mit Elementen vom Typ char Speicherplatz frei.

void _Chardealloc(void* ptr, size_type count);

Parameter

ptr
Ein Zeiger auf das erste Objekt, dessen Zuweisung zum Speicher aufgehoben werden soll.

count
Die Anzahl von Objekten, deren Zuweisung zum Speicherplatz aufgehoben werden soll.

Hinweise

Diese Memberfunktion wird von Containern verwendet, wenn sie mit einem Compiler kompiliert werden, der nicht kompiliert werden kann. Für die benutzerdefinierte allocator-Klasse implementiert es _Chardealloc, indem es das Ergebnis eines Aufrufs an die Funktion deallocate des Synchronisationsfilters zurückgibt. Der Zeiger ptr muss schon vorher für ein Zuweisungsobjekt, das gleich *this ist,von einen Aufruf an _Charalloc zurückgegeben worden sein, damit er ein Arrayobjekt der gleichen Größe und des gleichen Typs zuweisen kann. _Chardealloc löst nie eine Ausnahme aus.

allocator_base::address

Sucht die Adresse eines Objekts, dessen Wert angegeben wird.

pointer address(reference val);

const_pointer address(const_reference val);

Parameter

val
Der konstante oder nicht konstante Wert des Objekts, nach dessen Adresse gesucht wird.

Rückgabewert

Ein konstanter oder nicht konstanter Zeiger auf ein Objekt mit konstantem bzw. nicht konstantem Wert.

Hinweise

Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem &val zurückgegeben wird.

allocator_base::zuweisung

Ordnet einen Speicherblock zu, der groß genug ist, um mindestens eine angegebene Anzahl von Elementen zu speichern.

template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);

pointer allocate(size_type _Nx);

Parameter

_Nx
Die Anzahl der zuzuweisenden Elemente im Array

_Hint
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturspezifischen Format in die entsprechende 32-Bit-Ganzzahl mit Vorzeichen.

Rückgabewert

Zeiger auf das zugewiesene Objekt.

Hinweise

Die Memberfunktion implementiert Speicherreservierung für die benutzerdefinierte allocator-Klasse, indem sie das Ergebnis eines Aufrufs an die Funktion allocate des Synchronisationsfilters des Typs „type“ * wenn _Nx == 1 zurückgibt; andernfalls indem sie das Ergebnis eines Aufrufs an den Cast operator new(_Nx * sizeof(Type)) des Typs „Type“ *.

allocator_base::allocator_base

Konstruiert ein Objekt vom Typ allocator_base.

allocator_base();

template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);

Parameter

right
Das zu kopierende Zuweisungsobjekt.

Hinweise

Der erste Konstruktor erstellt eine allocator_base-Instanz. Der zweite Konstruktor erstellt eine allocator_base-Instanz, so dass jede allocator_base<Type, _Sync>-Instanz a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.

allocator_base::const_pointer

Ein Typ, der einen konstanten Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.

typedef const Type *const_pointer;

allocator_base::const_reference

Ein Typ, der einen konstanten Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.

typedef const Type& const_reference;

allocator_base::construct

Erstellt eine bestimmte Art von Objekt an einer bestimmten Adresse, die mit einem angegebenen Wert initialisiert wird.

void construct(pointer ptr, const Type& val);

Parameter

ptr
Ein Zeiger auf den Speicherort, in dem das Objekt erstellt werden soll.

val
Der Wert, mit dem das zu erstellende Objekt initialisiert werden soll.

Hinweise

Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem new((void*)ptr Type(val) aufgerufen wird.

allocator_base::d eallocate

Gibt eine angegebene Anzahl von Objekten im Speicher frei, beginnend an einer angegebenen Position.

void deallocate(pointer ptr, size_type _Nx);

Parameter

ptr
Ein Zeiger auf das erste Objekt, dessen Zuweisung zum Speicher aufgehoben werden soll.

_Nx
Die Anzahl von Objekten, deren Zuweisung zum Speicherplatz aufgehoben werden soll.

Hinweise

Die Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem deallocate(ptr) im Synchronisationsfilter Sync wenn _Nx == 1 aufgerufen wird; andernfalls Aufruf an operator delete(_Nx * ptr).

allocator_base::d estroy

Ruft einen Objektdestruktor auf, ohne die Zuordnung des Speicherplatzes aufzuheben, an dem Objekt gespeichert wurde.

void destroy(pointer ptr);

Parameter

ptr
Ein Zeiger, der die Adresse des zu zerstörenden Objekts angibt.

Hinweise

Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem ptr->~Type() aufgerufen wird.

allocator_base::d ifference_type

Ein ganzzahliger Typ mit Vorzeichen, der die Differenz zwischen Werten von Zeigern und dem Typ des Objekts, das von der Zuweisung verwaltet wird, darstellen kann.

typedef std::ptrdiff_t difference_type;

allocator_base::max_size

Gibt die Anzahl der Elemente vom Typ Type zurück, die von einem Objekt der Klassenzuweisung zugeordnet werden konnten, bevor der freie Speicherplatz verbraucht ist.

size_type max_size() const;

Rückgabewert

Die Anzahl von Elementen, die zugewiesen werden konnten.

Hinweise

Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem (size_t)-1 / sizeof(Type) wenn 0 < (size_t)-1 / sizeof(Type) zurückgegeben wird; andernfalls 1.

allocator_base::p ointer

Ein Typ, der einen Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.

typedef Type *pointer;

allocator_base::reference

Ein Typ, der einen Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.

typedef Type& reference;

allocator_base::size_type

Ein nicht signierter Integraltyp, der die Länge einer beliebigen Sequenz darstellen kann, die ein Objekt vom Typ allocator_base zuordnen kann.

typedef std::size_t size_type;

allocator_base::value_type

Ein Typ, der von der Zuweisung verwaltet wird.

typedef Type value_type;

Siehe auch

<allocators>