lock
先上结论;
返回一个引向weak_ptr所观察的资源的shared_ptr,如果可以的话。如果没有这样的指针(即weak_ptr引向的是空指针),shared_ptr引向的也是空指针。否则shared_ptr所引向的资源的引用计数将正常递增。
首先看下面代码:
reset函数会释放sp1指向的空间
int main() { std::shared_ptr<int> sp1, sp2; std::weak_ptr<int> wp; sp1 = std::make_shared<int>(20); wp = sp1; //sp2 = wp.lock(); sp1.reset(); cout << 111; //sp1 = wp.lock(); std::cout << "*sp1: " << *sp1 << ‘\n‘; std::cout << "*sp2: " << *sp2 << ‘\n‘; return 0; }
调用lock之后,会返回一个引向weak_ptr所观察的资源的shared_ptr