c++ weak_ptr如何配合lock使用

   2024-10-06 4420
核心提示:在C++中,可以通过lock方法对weak_ptr进行加锁,以获取其指向的共享对象的shared_ptr。lock方法返回一个shared_ptr,如果weak_pt

在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所指向的对象有有效的引用,否则可能会导致访问已经销毁的对象而产生未定义行为。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号