stl智慧型指標auto ptr

2021-05-25 02:03:02 字數 742 閱讀 4286

感覺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 初始化方式。必須...