#include


 

1 auto_ptr

2 unique_ptr

 

1 auto_ptr

 

C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。

使用std::auto_ptr,要#include <memory>。

 

double *p = new double;//为指针分配内存

 

std::auto_ptr<double> autop(p);

//继承性指针,必须依赖上面的指针p

//创建智能指针管理指针p指向的内存,可以自动释放内存,不用delete就可以自动删除

//搭配原生指针p使用,不用担心多delete或者少delete

//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 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM