C++11的智能指针总结

五迷三道 提交于 2019-11-29 19:30:57

到现在为止遇到了几种智能指针

shared_ptr

特点:可以自动销毁,并且可以多个指针指向同一块动态内存,内部有一个计数器,等到计数器为零就会自动销毁

weak_ptr

特点:是shared_ptr指针的附属,weak_ptr指向shared_ptr的区域,但并不会增加shared_ptr的计数器值,而且也不可以直接使用,需要lock(),提升为shared_ptr才可以使用。

scope_ptr

特点:也可以自动释放,但是不能和其他指针共享内存,也就是一块共享内存只能有一个scope_ptr指针,因为scope_ptr在销毁时是直接销毁这个指针指向的动态内存,如果有其他指针一起指向,那么其他指针就没有用了。

并且这个指针不能进行移动和复制操作的,可以交换

unique_ptr:也可以自动释放,但是不能和其他指针共享内存,也就是一块共享内存只能有一个scope_ptr指针

但是这个指针可以移动,不能复制

unique_ptr<TEST> p2(p1.release());

例如上面程序就是把p1指向的内容转给了p2,然后p1指向NULL

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!