對不起,如果這是明確地回答某處,但我有點困惑的助推文檔和我在線閱讀的文章。與boost :: shared_ptr(與reset()函數相比)的問題
我看到,我可以使用reset()函數來一個shared_ptr內釋放內存(假設引用計數爲零),例如,
shared_ptr<int> x(new int(0));
x.reset(new int(1));
我相信,這會導致創建的兩個整數對象,並且在這兩行的末尾,等於零的整數將從內存中刪除。
但是,如果我用下面的代碼塊:
shared_ptr<int> x(new int(0));
x = shared_ptr<int>(new int(1));
顯然,現在* X == 1爲真,但將原來的整數對象(等於零)可以從內存中刪除或有我泄露了那個記憶?
在我看來,這將是一個賦值運算符減少shared_ptr引用計數的問題,但對源代碼的一瞥似乎沒有爲我解決問題。希望有更有經驗或知識淵博的人能幫助我。提前致謝。
我確實看到了這一點,但後來我也看到了可能相互衝突的其他信息。感謝您的理智檢查。 – RandomGuy 2010-09-14 13:55:39