vector Speicher freigeben
-
Hi
Ich bin mir gerade unsicher ob ich im d-tor zuvor erstellten vector löschen soll oder ob das automatisch gemacht wird - und falls ja - Wie?
Es sieht in Moment etwa so aus:
class bla { private: vector<string> vStr; public: bla( ); ~bla( ); void machWasMitVector( ); } bla::~bla( ) { /* * sollte hier nicht sowas wie delete vStr * oder sowas in der Art stehen? */ }Wenn ich so darüber nachdenke dann weiß ich gar nicht ob überhapt so sachen wie die sstreams ( allgemein streams) oder strings überhapt mit delete freigegeben werden müssen oder ob da sowas wie garbage collector dafür gibt - wie sieht's damit aus?
-
Die werden automatisch zerstört. Das ist einer der Hauptgründe diese Klassen überhaupt, anstelle von rohen Zeigern, zu benutzen
-
Grundsätzlich gilt immer, wenn du new schreibst, musst du dich um das delete kümmern. Falls du kein new schreibst, dann musst du auch nichts selbst freigeben. (ausser bei z.B Smart Pointer o.ä)
Also
std::vectorwird korrekt selbst freigegeben. (Wenn du allerdings Elemente speicherst, welche du mit new angefordert hast, dann musst du die schon selbst freigeben, aber das ist bei std::string nicht der Fall).
-
-
Ausserdem sollte man
using namespacenicht in Headerdateien verwenden, weil dies den Namensraum für alle inkludierenden Dateien unwiderruflich offenlegt, was nicht immer erwünscht ist.
-
Alles klar - danke