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(),就会造成内存泄漏。