由来
为c++的内存管理填坑。
思想
RAII(Resource Acquisition is Initialization)即资源获得初始化,在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。
要素
- RAII思想
- 像指针一样的行为
参考文献
三种智能指针(auto_ptr,unique_ptr,shared_ptr)
shared_ptr && make_shared函数
- shared_ptr是一个标准的共享所有权的智能指针,允许多个指针指向同一个对象,定义在memory文件中。
- shared_ptr是通过引用计数机制实现的。
- shared_ptr重载了->和*操作。
- make_shared函数的主要功能是在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr;由于是通过shared_ptr管理内存,这是一种安全分配和使用动态内存的方法。
方法 | 功能 | 举例 |
---|---|---|
make_shared | 创建shared_ptr | auto ptr = std::make_shared<int>(10); |
use_count() | 参看对象的引用计数 | auto ptr1 = std::make_shared<int>(20); auto ptr2 = ptr1; auto ptr3(ptr2); cout << ptr1.use_count() << endl; cout ptr2.use_count() << endl; cout ptr3.use_count() << endl; |
unique() | 判断是否被独占 | cout << ptr1.unique() << endl; |
reset() | 放弃所持有的对象 | ptr2.reset(); |
get() | 获取原始指针 | int *ptr4 = ptr1.get(); |