C++11定义在
作用:对动态资源进行管理,保证在任何情况下,已构造的对象最终会销毁,即最终都会自动调用析构函数。
1. unique_ptr 1.1 创建智能指针对象
unique_ptrp(new int(10))
p当作指向 10 的指针用,可以用*p 访问10,实际上unique_ptr类里面重载了*运算符,unique_ptr里面有一个成员指针函数指向10。
1.2 释放unique_ptr指针对象 1.2.1 出了作用域自动释放 1.2.2 使用赋值nullptr 或者 NULL可以人为释放 1.2.3 使用reset函数可以人为释放
1.3 注意事项
禁用拷贝构造
unique_ptrp1(new int(10)); unique_ptr p2 = p1;
取而代之可以使用“移动构造”,把p1的使用权,转交给p2,p1则不能再操作堆区空间了。
unique_ptrp1(new int(10)); unique_ptr p2 = std::move(p1);
可以使用reset绑定新内存
unique_ptrp1(new int(10)); p1.reset(new int(20));
释放unique_ptr的控制权,但是不释放堆区内存,*p返回10
unique_ptrp1(new int(10)); int *p = p1.realease();
2.shared_ptr
允许多个智能指针共享同一堆分配对象的内存,通过引用计数实现,会记录有多少个shared_ptr共同指向同一个对象。一旦最后一个指针被销毁,那么引用计数会变为0,这个对象就被自动删除。
2.1 注意事项允许拷贝构造
shared_ptrp1(new int(10)); shared_ptr p1 = p2;
通过use_count查看计数器次数



