看來,weak_ptr
不知何故只知道它的引用shared_ptr
何時被銷燬。那個怎麼樣?是否有一個不斷的鏈接保持或什麼?當其shared_ptr被銷燬時,weak_ptr會發生什麼?
weak_ptr<int> test() {
shared_ptr<int> foo{new int};
return foo;
}
int main() {
auto foo = test();
cout << foo.expired() << endl;
}
我本來期望段錯誤時weak_ptr<int>
去檢查的shared_ptr<int>
的狀態,但沒有一個。 weak_ptr<int>
正確地將內存標識爲已解除分配。它如何知道?
「的std :: weak_ptr的」保存到共享的引用引用的計數方式與'std :: shared_ptr'相同。唯一不同的是'std :: weak_ptr'不增加/減少這個計數。 –
*我預料會出現段錯誤... *爲什麼?這就是weak_ptr – UmNyobe
@UmNyobe的重點!我想我正在試圖溝通,我不明白它是如何工作的。 –