auto在c++11中已經棄用。html
1、auto_ptr模板c++
auto_ptr與shared_ptr、unique_ptr都定義了相似指針的對象,能夠將new到的地址賦給這一對象,當智能指針過時時,析構函數會調用delete函數,對象將被銷燬,由此內存能夠自動被釋放。數組
2、shared_ptr模板安全
先看代碼:函數
auto_ptr p1 (new string("hello world!"); auto_ptr p2; p2 = p1;
在以上代碼中,p1與p2指向同一對象,常規指針在釋放內存時,系統會嘗試刪除同一對象兩次。在auto_ptr中,對象的全部權會歸於p2,p1將會變爲野指針。shared_ptr則容許多個指針指向同一個對象,每多一個指針指向,計數器就會+1,一樣在釋放的時候,當數值減爲0的時候即最後一個指針過時的時候纔會調用delete函數。url
3、unique_ptr模板.net
一樣爲了不多個指針指向,unique_ptr嚴格了全部權的概念,即個人就個人,不容許他人指向(如代碼段二中,採用unique_ptr編輯將會報錯,而原代碼會編譯經過但可能形成崩潰)。指針
4、總結c++11
須要多個指針指向一個對象時可以使用shared_ptr,如指針數組。不須要多個指針指向一個對象可以使用uniq_ptr,uniqu_ptr比auto_ptr更加安全(編譯報錯遠比程序崩潰好得多)。這裏作了一個表格總結。code
參考連接: