大家好
欢迎回来继续学习
C++语言程序设计
我们在程序中
用new进行动态内存分配
去delete去释放
这种显示的内存管理呢
它有它一定的安全隐患
比如说我们要忘记释放了
就会造成内存泄漏
那么在C++11中呢
为我们提供了
一种叫做智能指针的指针
它对内存回收技术
对垃圾回收技术
在某种程度上呢
提供了一些支持
使得我们的程序
能够在内存管理上面
更加安全一些
那么这个C++11
提供的这个智能指针
有这样三种
一种是unique_ptr类型
这是不允许多个指针共享资源的
也就是说
这个指针所指向的空间
只能由它所指向
它中存放的地址
不许复制到别的指针里面去
但是
它可以用
标准库里面的move函数
把它所指向的这个对象
转移给别的指针
也就是把它里面存放的地址
转移到别的指针中去
但是一旦转移到别的指针中去
原来的这一个
unique_ptr类型的指针
就失效了 不能再用了
那么另一个类型是
shared_ptr类型
是顾名思义可以共享的
就是多个指针可以共享资源
多个shared_ptr类型的指针
可以指向同一个内存单元
还有一个类型的指针
是weak_ptr
这个指针
它的使用就更复杂一些
它可以复制shared_ptr指针
所指向的这个单元
它可以复制
shared_ptr指针里面那个地址
但是它的构造或释放
对资源又不产生影响