std auto ptr智慧型指標使用

2021-08-26 02:50:05 字數 1286 閱讀 5426

此篇博文記錄編碼過程中遇到的有關智慧型指標std::auto_ptr的使用方法,由於是記錄使用過程中遇到的方法所以不會將該智慧型指標的全部方法簡紹清楚,有關std::auto_ptr的詳細教程請參考相應的教程。

1、reset(pam)方法:使用pam重置智慧型指標,如:

std::auto_ptrmessage;

message.reset(mfifo.getnext());

上面的使用過程中message是乙個智慧型指標物件,執行reset(mfifo.getnext())方法後會使智慧型指標指向mfifo.getnext()所返回的物件,同時呼叫智慧型指標之前指向物件的析構函式,將之前物件析構掉。

下面是msdn中的舉例解釋:

// auto_ptr_reset.cpp

// compile with: /ehsc

#include #include #include using namespace std;

class int

; ~int( )

;int x;

};int main( )

執行結果:

constructing 00311af8 value: 5

constructing 00311b88 value: 6

destructing 00311af8 value: 5

pi2 == pi3

destructing 00311b88 value: 6

2、release()方法:

作用是釋放該智慧型指正對其所指向的物件的控制許可權,並返回其指向物件的指標,同樣我們通過msdn中的案例深入理解

// auto_ptr_release.cpp

// compile with: /ehsc

#include #include #include using namespace std;

class int

; ~int( ) ;

int x;

};int main( )

輸出:

constructing 00311af8 value: 5

constructing 00311b88 value: 6

destructing 00311af8 value: 5

pi2 == pi3

destructing 00311b88 value: 6

智慧型指標std auto ptr

std auto ptr 對於編譯器來說,智慧型指標實質是乙個棧物件,而並非指標型別。智慧型指標通過建構函式獲取堆記憶體的管理所有權,而在其生命期結束時,再通過析構函式釋放由它所管理的堆記憶體。所有智慧型指標都過載了 operator 操作符,直接返回物件的引用,用以操作物件。訪問智慧型指標原來的方...

3 智慧型指標std auto ptr

std auto ptr 對於編譯器來說,智慧型指標實質是乙個棧物件,而並非指標型別。智慧型指標通過建構函式獲取堆記憶體的管理所有權,而在其生命期結束時,再通過析構函式釋放由它所管理的堆記憶體。所有智慧型指標都過載了 operator 操作符,直接返回物件的引用,用以操作物件。訪問智慧型指標原來的方...

智慧型指標 強弱智慧型指標

在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...