感覺auto_ptr還是存在一些不足的,效率十分低,而且丟失了一般指標方便常用的操作,如++,--等,auto_ptr只過載了=,*,->這幾個操作符,所以使用很不方便。
一、說明:int *a = null;delete a;//do nothing
應此auto_ptr的析構函式是這樣子的:
~auto_ptr()
二、auto_ptr中有乙個很重要的函式release
_ty *release() _throw0()
_ty *_tmp = _myptr;
_myptr = 0;
return (_tmp); }
該函式的作用是將自身指標交給release的返回值,而自身指標指null
三、每次拷貝的時候都會呼叫release函式
auto_ptrp1(new int);
//執行以下**後,p1將失效,p1=null
auto_ptrp2(p1);或auto_ptrp2 = p1;
這樣可以保證只有乙個auto_ptr指標指向每個new 對像,從而避免重複delete,
不過也有乙個最大的弊病,就是不符合使用習慣,
如果在賦值後使用原指標,將導致使用null指標而崩潰。
個人覺得,如果使用引用計數,當乙個記憶體區不再被任何指標指向時delete掉,這樣可能會好一點。
stl智慧型指標auto ptr
感覺auto ptr還是存在一些不足的,效率十分低,而且丟失了一般指標方便常用的操作,如 等,auto ptr只過載了 這幾個操作符,所以使用很不方便。一 說明 int a null delete a do nothing 應此auto ptr的析構函式是這樣子的 auto ptr 二 auto p...
STL 智慧型指標auto ptr
c 中指標申請和釋放記憶體通常採用的方式是new和delete。然而標準c 中還有乙個強大的模版類就是auto ptr,它可以在你不用的時候自動幫你釋放記憶體。下面簡單說一下用法。cpp view plain copy 用法一 std auto ptrm example new myclass 用法...
auto ptr智慧型指標
1 class auto ptr 這個智慧型指標應該保證,無論在何種情形下,只要自己被摧毀,就一定連帶釋放其所指資源。而由於智慧型指標本身就是區域變數,所以無論是正常退出,還是異常退出,只要函式退出,它就一定會被銷毀。注意 auto ptr不允許使用一般指標慣用的賦值 assign 初始化方式。必須...