1、auto_ptr //在c++11中由unique_ptr取代
2、unique_ptr //auto_ptr 和 unique_ptr 都是排他性的智能指针,不能两个指针同时管理一个内存资源
在赋值时候,使用std::move将左值临时转换为右值。好处就是让程序员清楚这样赋值造成的后果。如果自己觉得没问题就可以这样写。
3、shared_ptr //多了一个引用计数, 看某个内存有多少个指针在使用,如果没有指针在使用,引用计数 = 0,那么就将这个内存释放。
3.1 使用 make_shared<T> 分配内存的效率更高。
3.2 sp.use_count() //有多少个指针管控sp所指的资源
3.3 sp.swap(sp1) //交换资源
4、weak_ptr //弱指针,协助shared_ptr
4.1 .lock() //将弱指针转换成共享指针
4.2 wp = sp; //不影响引用计数。
4.3 弱指针不支持 * 和 -> 。