-2
我對共享指針的一個基本問題,在接下來的示例代碼:用operator =重新分配一個共享指針導致內存泄漏?
int main() {
std::shared_ptr<int> sp; // empty
std::shared_ptr<int> sp2;
sp.reset (new int);
sp2.reset (new int);
*sp=10;
*sp2=400;
sp2=sp;
std::shared_ptr<int> sp3;
sp3=sp1;
//what happens with the int of value 400?
//more code
}
什麼用的價值400 INT發生什麼呢?這是內存泄漏嗎?這是一個基本的例子,但如果不是int指針指向一個大類,那麼如果存在內存泄漏,則會出現問題,如果sp2重新分配的次數更多,則會出現問題。 謝謝!
你是不是要編寫'* sp = 10'?如果你的意思是'sp = std :: make_shared(10);'會更有意義。 –
對不起,忘了那些行 –
當然沒有泄漏,因爲'sp2'是包含400的int的唯一所有者,它將在'sp2'獲得由'sp'擁有的內存的共享所有權之前被銷燬。 – Praetorian