#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