die Frage über die Belegung mit boost::shared_ptr (vs. die reset () - Funktion)

Sorry, wenn dies explizit irgendwo beantwortet, aber ich bin ein wenig verwirrt durch die boost-Dokumentation und Artikeln, die ich gelesen habe, online.

Sehe ich, dass ich mit der reset () - Funktion, um den Speicher freizugeben, innerhalb eines shared_ptr (vorausgesetzt der Referenzzähler geht auf null), z.B.,

shared_ptr<int> x(new int(0));
x.reset(new int(1));

Das ist, glaube ich, würde das Ergebnis in der Schaffung von zwei integer-Objekte, und am Ende diese beiden Zeilen die ganze Zahl gleich null wäre, aus dem Speicher gelöscht.

Aber was ist, wenn ich den folgenden code-block:

shared_ptr<int> x(new int(0));
x = shared_ptr<int>(new int(1));

Natürlich, jetzt *x == 1 ist true, aber das original-integer-Objekt (gleich null) aus dem Speicher gelöscht oder habe ich durchgesickert, dass der Speicher?

Scheint es mir, dass dies ein Problem des zuweisungsoperators eine Verringerung der shared_ptr Verweiszähler, aber ein Blick auf den source-code scheint nicht die Frage zu klären, für mich. Hoffentlich jemand mehr erfahren oder kompetent kann mir helfen. Vielen Dank im Voraus.

InformationsquelleAutor RandomGuy | 2010-09-13
Schreibe einen Kommentar