In meinem Code Überprüfung ich einige „hässlich“ Struktur sehe ich verwenden, in einer Klasse (die so genannte „Karte“) Ich habe einen Vektor, der eine „Daten“ Klasse enthält:Speicherverwaltung & std :: allocator
std::vector<PointerToHUGEClass> vector;
Wo PointerToHUGEClass ist genau wie der Name beschreibt. (Obwohl das Objekt auch gezeigt wurde, gehört es auch der map-Klasse und wurde mit dem Parameter "new" im Konstruktor erstellt). Das funktioniert alles gut (im Moment). Aber ich habe immer noch das Gefühl, dass es eher eine Art Work-around ist.
Die nur Grund, warum ich eine "PointerToHUGEClass" anstelle von nur "HUGEClass" verwende, ist, weil ich sicherstellen wollte, dass das Objekt nicht vom Stapel deklariert wird. Dies wurde jedoch gemacht, bevor ich Allokatoren verstand. Jetzt fühle ich, dass es mehr oder weniger die Aufgabe des Zuweisers ist sicherzustellen, dass der Speicher nicht vom Stapel deklariert wird.
Meine Fragen:
- Bin ich in der Annahme, die allocator korrigieren ist aus den Elementen für die Speicherverwaltung verantwortlich? (Und stellen Sie sicher, dass es aus Stack/Freestore/Heap/was auch immer erklärt wird)
- Was macht der Std :: Allokator? - Deklariert es vom Stapel oder vom Heap?
- (Fortsetzung von der vorherigen Frage): Wenn ich ein im Stack deklariertes Element in die Datenstruktur kopiere, wird es immer noch im Heap deklariert?
Thanks again, paul23
@Simone: hmm, dass der Code 'std :: vector' oder 'std :: vector ' Thanks for noting lesen sollte. (Obwohl es meine Fragen nicht wirklich ändert, sind die Fragen allgemeiner, da ich mich schon seit einem Jahr frage) –
paul23