首页 > 代码库 > 关于智能指针

关于智能指针

对share_ptr,属于强引用型的智能指针。内部通过引用计数实现对对象的管理,在引用计数为0时,自动释放对象。使用share_ptr的缺点是:会造成对象的循环引用,导致对象永远无法释放,比如:

Share_ptr可以在多线程中使用,确保指针指向的对象是有效的。

 

Weak_ptr是弱引用性的智能指针。Weak_ptr不对造成对象的引用技术的增加。因此不会造成对象的循环引用,weak_ptr可以通过引用计数或者 成员函数expired来判断对象是否已经释放。在访问对象时。但是在使用时需要把weak_ptr转换为share_ptr指针比如:

 shared_ptr<string> sp (new string("code"));   cout<<*sp<<endl;   weak_ptr<string> wp = sp;   cout<<wp.use_count()<<endl;   cout<<wp.lock()->c_str()<<endl;   shared_ptr<string> tempsp(wp);   cout<<wp.use_count()<<endl;   cout<<*tempsp<<endl;

关于智能指针