1 auto_ptrios
2 unique_ptrspa
1 auto_ptr指针
C++的auto_ptr所作的事情,就是动态分配对象以及当对象再也不须要时自动执行清理。code
使用std::auto_ptr,要#include <memory>。对象
double *p = new double;//为指针分配内存blog
std::auto_ptr<double> autop(p);继承
//继承性指针,必须依赖上面的指针p内存
//建立智能指针管理指针p指向的内存,能够自动释放内存,不用delete就能够自动删除作用域
//搭配原生指针p使用,不用担忧多delete或者少deleteio
//auto_ptr更多用于管理类和对象的内存
1 #include <iostream> 2 #include <memory> 3 4 void main() 5 { 6 for (int i = 0; i < 10000000; i++) 7 { 8 double *p = new double;//为指针分配内存 9 10 std::auto_ptr<double> autop(p); 11 //继承性指针,必须依赖上面的指针p 12 //建立智能指针管理指针p指向的内存,能够自动释放内存,不用delete就能够自动删除 13 //搭配原生指针p使用,不用担忧多delete或者少delete 14 //auto_ptr更多用于管理类和对象的内存 15 } 16 17 system("pause"); 18 }
2 unique_ptr
unique_ptr是一种定义在<memory>中的智能指针(smart pointer)。它持有对对象的独有权——两个unique_ptr不能指向一个对象,不能进行复制操做只能进行移动操做。unique_ptr在超出做用域,即如下状况时它指向的对象会被摧毁:
unique_ptr指向的对象被破坏
对象经过operator=()或reset()被指定到另外一个指针)
unique_ptr还可能没有对象,这种状况被称为empty。
//C++11新指针
//std::unique_ptr<指针指向的变量数据类型>指针变量名(new 指针指向的变量数据类型);
std::unique_ptr<double>pdb(new double);
1 #include <iostream> 2 #include <memory> 3 4 void main() 5 { 6 for (int i = 0; i < 10000000; i++) 7 { 8 //C++11新指针 9 //std::unique_ptr<指针指向的变量数据类型>指针变量名(new 指针指向的变量数据类型); 10 std::unique_ptr<double>pdb(new double); 11 } 12 13 system("pause"); 14 }