看来,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的重点!我想我正在试图沟通,我不明白它是如何工作的。 –