# std::weak_ptr<T>::expired

< cpp‎ | memory‎ | weak ptr

bool expired() const noexcept; |  | (C++11 起)

等价于 use_count() == 0 。可能仍未对被管理对象调用析构函数，但此对象的析构已经临近（或可能已发生）。

### 参数

（无）

### 返回值

若被管理对象已被删除则为 true ，否则为 false 。

### 注意

若被管理对象在线程间共享，则此函数内在地不可靠，通常 false 结果可能在能用之前就变得过时。 true 结果可靠。

### 示例

演示如何用 expired 检查指针的合法性。

    #include <iostream>
    #include <memory>

    std::weak_ptr<int> gw;

    void f()
    {
        if (!gw.expired()) {
            std::cout << "gw is valid\n";
        }
        else {
            std::cout << "gw is expired\n";
        }
    }

    int main()
    {
        {
            auto sp = std::make_shared<int>(42);
            gw = sp;

            f();
        }

        f();
    }

输出：

    gw is valid
    gw is expired

### 参阅

lock | 创建管理被引用的对象的`shared_ptr` (公开成员函数)
use_count | 返回管理该对象的 `shared_ptr` 对象数量 (公开成员函数)