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 }