shared_ptr的循环的资源泄漏
先上代码
class A :public enable_shared_from_this<A>{
public:
A() {
cout << "A create" << endl;
}
~A() {
cout << "A dele" << endl;
}
void son_get_self() {
m_self = shared_from_this();
}
private:
int a;
shared_ptr<A> m_self;
};
int main() {
shared_ptr<A> s(new A());
(*s).son_get_self();
cout << s.use_count();
}
这里我们定义了一个A的类,如果我们调用其中的son_get_self方法,A中m_self就会获得自己的指针, 而引用计数器就会加1, 当我们代码结束时候,由于shared_ptr的引用计数器大于0,所以并不会执行~A(),就会造成内存泄漏。
本文探讨了C++中shared_ptr的使用,特别是当出现循环引用时可能导致的内存泄漏问题。通过一个实例展示了当类内部成员变量引用自身导致引用计数无法归零,从而使得析构函数不被调用的情况。了解并避免这种情况对于有效管理内存至关重要。
3万+

被折叠的 条评论
为什么被折叠?



