auto_ptr frage: mehrfache speicherzuweisung
-
Hallo,
ich habe einen auto_ptr:
std::auto_ptr<Foo> bar;
ich will ihm Speicher in einer Funktion zuweisen:
bar = std::auto_ptr<Foo> new Foo();Jetzt spiele ich rum und rufe die Funktion mit der Speicherzuweiseung noch mal, ohne aus dem scope rauszulaufen oder den Speicher freizugeben.
Ist das OK oder muss ich irgendwas machen, befor ich meinem auto pointer Speicher zuweise?
-
Warum benutzt du nicht die reset Methode?
-
hmmmm schrieb:
Warum benutzt du nicht die reset Methode?
Gibt denn die reset (bar.reset()) den Speicher frei??
Ich will ja bloss meinen pointer immer wieder benutzen, ohne dass ich mich um
die Speicherverwaltung kümmern muss.Im Moment scheint es mit mehrfacher Speicherzuweisung zu funktionieren,
zumindest kann ich mit meinem auto pointer ganz normal weiterarbeiten, wenn ich meine Funktion, die am Anfang neuen Speicher reserviert immer wieder aufrufe, ohne
den pointer zu "reseten".
-
void reset(X* p = 0) throw();
Sets the underlying pointer to p. If non-null, deletes the old underlying pointer.
-
Ich habe das mir release() getestet.
Es funktioniert damit genausoso wie ohne.Der pointer lief dabei aus dem scope raus, daher muss man sich nicht wundern.
Gerade habe ich zwei mal nacheinander in der selben Funktion den Speicher zugewiesen, ohne ihn vorher freizugeben oder zu "reseten". Funktioniert genauso