c++ weak_ptr如何配合lock使用
在C++中,可以通过lock
方法对weak_ptr
进行加锁,以获得其指向的共享对象的shared_ptr
。lock
方法返回一个shared_ptr
,如果weak_ptr
已失效,则返回一个空的shared_ptr
。
以下是一个示例代码:
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<int> shared = std::make_shared<int>(42);
std::weak_ptr<int> weak = shared;
// 使用lock获得shared_ptr
std::shared_ptr<int> locked = weak.lock();
if (locked) {
std::cout << "Value: " << *locked << std::endl;
} else {
std::cout << "Weak pointer is expired" << std::endl;
}
return 0;
}
在上面的示例中,weak
是一个指向shared
的weak_ptr
。我们使用lock
方法获得weak
指向的shared
对象的shared_ptr
。如果weak
已失效(即shared
对象已被烧毁),则locked
将为空,我们可以通过检查locked
是否是为空来肯定weak
是否是有效。
需要注意的是,当使用lock
方法时,一定要确保对weak_ptr
所指向的对象有有效的援用,否则可能会致使访问已烧毁的对象而产生未定义行动。
tiktok粉丝购买:https://www.smmfensi.com/
TOP