本文主要是介绍c++新特性11 (12)weak_ptr,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 用于避免shared_ptr相互指向产生的环形结构,造成的内存泄漏:“死锁”内存都没有释放。
struct A;
struct B;struct A {std::shared_ptr<B> pointer;~A() {std::cout << "A 被销毁" << std::endl;}
};
struct B {std::shared_ptr<A> pointer;~B() {std::cout << "B 被销毁" << std::endl;}
};
int main() {auto a = std::make_shared<A>();auto b = std::make_shared<B>();a->pointer = b;b->pointer = a;
}
1.1 weak_ptr count是弱引用;弱引用个数不影响shared count和对象本身,shared count为0时则直接销毁。
1.2 常用方法
. expired():检查被引用的对象是否已删除。
. lock()会返回shared指针,判断该指针是否为空。
. use_count()也可以得到shared引用的个数,但速度较慢。
这篇关于c++新特性11 (12)weak_ptr的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!