C 11 shared ptr概念及用法

2022-07-11 18:30:14 字數 918 閱讀 7487

c++11模板庫

#include shared_ptrptr(new t);  // t 可以是 int、char、類等各種型別
gnu g++ 的標準庫中還沒有支援,需使用boost

#include
每個 shared_ptr 物件在內部指向兩個記憶體位置

ptr.use_count();
(1)使用空引數建構函式構造

std::shared_ptrptr;
這樣構造的話,ptr 的意義就相當於乙個 null 指標。當試圖在乙個空指標上做類似於 *ptr 或者 ptr->xx 之類的東西的時候,會出現異常錯誤

(2)直接從 new 操作符的返回值構造

std::shared_ptrptr(new t()); //引用計數加 1
(3) 使用make_shared方法

std::shared_ptrp1=std::make_shared(); //引用計數加 1
(4)複製建構函式

std::shared_ptrptr2(ptr1);    // 這就是使用複製建構函式的方法,引用計數加 1
shared_ptr 可以當作函式的引數傳遞,或者當作函式的返回值返回,這個時候其實也相當於使用複製建構函式。

過程如下:作函式實參時,將指標執行複製建構函式傳入函式體內,因此該記憶體塊的引用計數+1;

當作為函式返回值時,複製建構函式將記憶體位址傳遞給新指標,引用計數+1,然後,區域性指標執行析構,引用計數-1。

智慧型指標之共享指標shared_ptr 的理解、使用(全)

c++11 std::shared_ptr總結與使用

C 11 shared ptr效率比較

我實現的網路庫中使用了c 11中的shared ptr.昨天做profile,發現很多cpu都消耗在shared ptr上,所以打算看看shared ptr的效率如何.實驗是這樣的,弄乙個臨時的shared ptr,然後不停的拷貝,拷貝100w次,看消耗多長時間.實驗物件是gcc 4.6.2和cla...

C 11 shared ptr(智慧型指標)詳解

要確保用 new 動態分配的記憶體空間在程式的各條執行路徑都能被釋放是一件麻煩的事情。c 11 模板庫的 標頭檔案中定義的智慧型指標,即 shared ptr 模板,就是用來部分解決這個問題的。只要將 new 運算子返回的指標 p 交給乙個 shared ptr 物件 託管 就不必擔心在 寫dele...

C 引用 概念及用法

一.概念 引用是變數的別名,對引用的操作與對變數的操作完全一樣。引用符號 與c語言中取位址符號一樣,含義不同。引用的方法 型別識別符號 引用名 變數名 例如 int a int ra a 定義引用ra,它是變數a的引用,即別名 二.引用例項 1.引用作為函式引數 void swap int p1,i...