c++中關於智慧指標std::tr1::shared_ptr的用法
智慧指標本身絕對不能是動態分配的記憶體,不然智慧指標就沒有存在的意義了。 智慧指標有個資料成員,是個指標,至於什麼型別,看你類别範本怎麼實現。這個指標才是動態分配記憶體的。 只能本身必須是棧裡分配記憶體。利用棧的自動回收資料的特性,在被系統西東回收時,呼叫智慧指標類的解構函式,從而釋放智慧指標內部那個指標型資料成員所指向的記憶體。 舉個例子 std::shared_ptr<int> p = std::shared_ptr<int>(new int); 這樣你就宣告瞭一個智慧指標p,並且為其內部的真實指標分配了記憶體空間。 使用時p可以像一般指標那樣用 比如 *p = 5; 即給其賦值5。 還有就是雖然你一開始new了,但是你不需要delete,只能指標會在其被系統銷燬時,檢查是否需要delete。 你這個智慧指標是share的,意味著支援共享真實指標的所有權。 所以你還可以 std::shared_ptr<int> q = p; 這樣p和q同時指向同一個記憶體。 如果p失效了,p的解構函式不會delete真實指標,因為q還沒失效。只有當q也失效,p才會在自己失效時自動delete掉內部的真實指標。這就是智慧指標智慧的地方
相關文章
- C++ 智慧指標詳解: std::unique_ptr 和 std::shared_ptrC++指標
- 智慧指標思想實踐(std::unique_ptr, std::shared_ptr)指標
- C++中的std::shared_ptrC++
- c++ 智慧指標用法詳解C++指標
- 智慧指標之手撕共享指標shared_ptr指標
- C++基礎回顧4——智慧指標shared_ptrC++指標
- std::tr1::functionFunction
- C++智慧指標之shared_ptr與右值引用(詳細)C++指標
- 關於C++當中的指標懸空問題C++指標
- 智慧指標(auto_ptr 和 shared_ptr)指標
- 【c++】智慧指標C++指標
- C++智慧指標C++指標
- 智慧指標用法學習指標
- C++基於模板實現智慧指標C++指標
- 聊聊 C++ 中的幾種智慧指標 (上)C++指標
- C++中的this指標C++指標
- 「C++」理解智慧指標C++指標
- C++11智慧指標用法C++指標
- c++智慧指標中的reset成員函式C++指標函式
- 關於指標指標
- C++ 指標常見用法小結C++指標
- C++ 標準庫 std::set std::multiset swap()的使用C++
- C++進階(智慧指標)C++指標
- C++ 智慧指標詳解C++指標
- C++中的動態記憶體與智慧指標C++記憶體指標
- 關於指標傳遞和指標的指標指標
- c++動態記憶體智慧指標及weak_ptr用法的理解C++記憶體指標
- 不要輕易定義指向std::vector中的元素的指標指標
- 五, 關於指標指標
- C++中的指標與引用C++指標
- C++ 中 this 指標的用法詳解C++指標
- 關於引用(python中的偽指標)的理解Python指標
- C++筆記(11) 智慧指標C++筆記指標
- C++智慧指標簡單剖析C++指標
- c++ auto_ptr 智慧指標C++指標
- 【C++智慧指標 auto_ptr】C++指標
- 關於C/C++ void指標,使用void指標拷貝int 陣列C++指標陣列
- C++中std::allocator的使用C++