Wie verwenden von std::allocator in meiner eigenen container-Klasse

Ich bin versucht zu schreiben, eine container-Klasse, die verwendet STL-allocators. Was ich momentan mache, ist ein private member

std::allocator<T> alloc_;

(dieses wird später Vorlagen, so dass der Benutzer kann wählen Sie eine andere Zuweisung) und rufen Sie dann

T* ptr = alloc_.allocate(1,0);

einen Zeiger auf eine neu zugewiesene 'T' - Objekt (und verwendet alloc_.Konstrukt zum Aufruf des Konstruktors; siehe Antwort unten). Das funktioniert mit dem GNU-C++ - Bibliothek.

Jedoch mit STLPort unter Solaris, dies fehlschlägt, das richtige zu tun und führt zu allen möglichen bizarren Speicher Korruption Fehler. Wenn ich stattdessen tun

std::allocator_interface<std::allocator<T> > alloc_;

dann ist es alles so funktioniert wie es sollte.

Was ist der richtige Weg für die Verwendung der stl::allocator? Die STLPort - /Solaris-version nicht kompiliert mit g++, aber g++ richtig?

  • Es gibt nichts genannt allocator_interface in der standard-Bibliothek.
Schreibe einen Kommentar