智能指针使用
void Check(weak_ptr<int> &wp)
{
shared_ptr<int> sp = wp.lock();
if (sp != nullptr) {
cout<<"still "<<*sp<<endl;
} else {
cout<<"pointer is invalid."<<endl;
}
}
int main()
{
shared_ptr<int> sp1(new int(33));
shared_ptr<int> sp2 = sp1;
weak_ptr<int> wp = sp1;
cout<<*sp1<<endl;
cout<<*sp2<<endl;
Check(wp);
sp1.reset();
cout<<*sp2<<endl;
Check(wp);
sp2.reset();
Check(wp);
}
输出结果
33
33
still 33
33
still 33
pointer is invalid.
说明:weak_ptr可以用在校验shared_ptr的有效性,如Check函数使用。
本文通过一个示例展示了如何使用`weak_ptr`来检查`shared_ptr`的有效性。在`Check`函数中,`weak_ptr`的`lock()`方法用于判断`shared_ptr`是否仍然存在。在`main`函数中,随着`shared_ptr`的`reset()`调用,`weak_ptr`的状态也随之变化,从而确保了对动态内存的正确管理。
2107

被折叠的 条评论
为什么被折叠?



