std::weak_ptr<T>::expired
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
参阅
创建管理被引用的对象的shared_ptr (公开成员函数) | |
返回管理该对象的 shared_ptr 对象数量 (公开成员函数) |