PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Vektorelemente im Stack oder im Heap?



KL47
31-10-2004, 19:21
Hallo,

ich habe eine kurze Frage zur Speicherverwaltung. Und zwar erstelle ich mit std::vector<std::string> * myVector = new std::vector<std::string>; einen neuen Vektor im Heap, klar. Nun füge ich mit myVector->push_back("KOMPAKT"); einen neuen String in den Vektor ein. Befindet sich der String jetzt im Stack oder im Heap?

Danke

PS: Wär schön, wenn ihr das begründen könntet, "Heap." oder "Stack." hilft mir als Antwort relativ wenig. ;)

wraith
31-10-2004, 19:31
Du mußt dein Bsp garnicht so kompliziert machen.
Leg' deinen vector aufm Heap an; der vector verwaltet seinen Speicher intern dynamisch, heißt auf dem Heap, dabei ist egal, wo der vector letztendlich selber erstellt wurde (für std::string gibt es Optimierungen, daß kurze Strings intern in einen Array fester ablegt werden und erst, wenn der String länger wird auf dynamischen Speicher ausgewichen wird, aber eine solche vector-Implementierung ist mir nicht bekannt, und wäre auch unsinnig).

KL47
31-10-2004, 19:43
Ah, ausgezeichnet! Ich hatte schon befürchtet, n Vektor mit Pointern anlegen zu müssen und dann immer nur Pointer auf die Elemente in den Vektor zu tun. Puh! :rolleyes:

Danke ;)