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引用的个数,但速度较慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)