智能指針

關(guān)鍵點##

RAII機(jī)制

C++操作符重載

參考鏈接##

C++11智能指針之unique_ptr

shared_ptr

shared_ptr的幾點注意點

智能指針weak_ptr

cpluscplus

unique_ptr智能指針##

生命周期###

unique_ptr生命周期,與普通的數(shù)據(jù)類型相同,一旦離開作用域菩收,如果其指向?qū)ο螅?br> 就會將指向的對象進(jìn)行銷毀。

unique_ptr特點在于其“獨占”的特點鳞陨,同一時刻
unique_ptr指向的對象只能有一個引用,不能存在多個unique_ptr指向同一個對象
瞻惋。

基本操作###

//后期綁定
unique_ptr<int> ui;
ui.reset(new int(1));
//創(chuàng)建時動態(tài)綁定
unique_ptr<int> ui2(new int(1));
//釋放所有權(quán)
int* pi = ui2.release();
//轉(zhuǎn)移所有權(quán)
unique_ptr<string> us(new string("abc"));
unique_ptr<string> us2 = std::move(us);
//主動銷毀
us2 = nullptr

shared_ptr##

生命周期###

shared_ptr生命周期在離開作用域時厦滤,會將其指向?qū)ο蟮囊糜嫈?shù)減一,
如果發(fā)現(xiàn)引用計數(shù)已經(jīng)歸〇歼狼,那么將會把其引用的對象進(jìn)行進(jìn)行銷毀掏导。

shared_ptr的特點在于“引用計數(shù)”,每當(dāng)有一個shared_ptr
指針指向相同的對象的時候羽峰,將會把引用計數(shù)增加1趟咆,每當(dāng)指向?qū)ο蟮膕hared_ptr被銷毀時,
將會把引用計數(shù)減少1梅屉,當(dāng)引用計數(shù)減少為0時忍啸,將會把對象銷毀。

基本操作

//創(chuàng)建的時動態(tài)綁定
shared_ptr<int> sp(new int(10));
//通過拷貝
shared_ptr<int> sp1 = sp;
//停止引用對象
sp.reset();
//銷毀釋放
sp1 = nullptr;

注意###

由于其使用引用計數(shù)的方式進(jìn)行引用對象的釋放履植,所以可能存在環(huán)狀鏈?zhǔn)浇Y(jié)構(gòu)造成內(nèi)存的泄露。
這種時候需要使用另一個智能指針weak_ptr解決這種情況悄晃。c++無法想java那樣自動判斷并
釋放環(huán)狀鏈?zhǔn)浇Y(jié)構(gòu)玫霎,所以在使用上還是得需要小心處理。

由于其內(nèi)部加減引用計數(shù)不是線程安全妈橄,所以在多線程使用時需要自己添加加鎖操作以保證
其引用計數(shù)的正確性庶近。

weak_ptr##

生命周期###

嚴(yán)格來說,weak_ptr并不像shared_ptr以及unique_ptr一樣存在生命周期這總說法眷蚓,因為
其內(nèi)部不進(jìn)行引用對象的釋放鼻种,也無法直接進(jìn)行引用對象的解引用以及->操作。其如果需要
進(jìn)行引用對象的操作沙热,需要使用lock函數(shù)獲取一個shared_ptr指針叉钥,然后性shared_ptr一
樣進(jìn)行使用。

weak_ptr的特點在于“輔助”shared_ptr指針的使用篙贸,其最大
的作用在于解決shared_ptr環(huán)狀引用的問題投队。

基本操作

//引用對象
shared_ptr<int> sp(new int(1));
weak_ptr<int> wp(sp);
//判斷是否失效
if (wp.expired())
{
    //未失效
    //獲取一個Shared_ptr對象進(jìn)行使用
    shared_ptr<int> sp1 = wp.lock();
    *sp1 = 0;
}
else
{
    //已經(jīng)失效
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爵川,隨后出現(xiàn)的幾起案子敷鸦,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扒披,死亡現(xiàn)場離奇詭異值依,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碟案,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門愿险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蟆淀,你說我怎么就攤上這事拯啦。” “怎么了熔任?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵褒链,是天一觀的道長。 經(jīng)常有香客問我疑苔,道長甫匹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任惦费,我火速辦了婚禮兵迅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薪贫。我一直安慰自己恍箭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布瞧省。 她就那樣靜靜地躺著扯夭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞍匾。 梳的紋絲不亂的頭發(fā)上交洗,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音橡淑,去河邊找鬼构拳。 笑死,一個胖子當(dāng)著我的面吹牛梁棠,可吹牛的內(nèi)容都是我干的置森。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼掰茶,長吁一口氣:“原來是場噩夢啊……” “哼暇藏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起濒蒋,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盐碱,失蹤者是張志新(化名)和其女友劉穎把兔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓮顽,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡县好,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了暖混。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缕贡。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拣播,靈堂內(nèi)的尸體忽然破棺而出晾咪,到底是詐尸還是另有隱情,我是刑警寧澤贮配,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布谍倦,位于F島的核電站,受9級特大地震影響泪勒,放射性物質(zhì)發(fā)生泄漏昼蛀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一圆存、第九天 我趴在偏房一處隱蔽的房頂上張望叼旋。 院中可真熱鬧,春花似錦沦辙、人聲如沸夫植。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偷崩。三九已至,卻和暖如春撞羽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衫冻。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工诀紊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隅俘。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓邻奠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親为居。 傳聞我的和親對象是個殘疾皇子碌宴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 原作者:Babu_Abdulsalam 本文翻譯自CodeProject,轉(zhuǎn)載請注明出處蒙畴。 引入### Ooops...
    卡巴拉的樹閱讀 30,100評論 13 74
  • 1. 什么是智能指針贰镣? 智能指針是行為類似于指針的類對象呜象,但這種對象還有其他功能。 2. 為什么設(shè)計智能指針碑隆? 引...
    MinoyJet閱讀 639評論 0 1
  • 導(dǎo)讀## 最近在補(bǔ)看《C++ Primer Plus》第六版恭陡,這的確是本好書,其中關(guān)于智能指針的章節(jié)解析的非常清晰...
    小敏紙閱讀 2,004評論 1 12
  • 專屬所有權(quán):unique_ptr 我們大多數(shù)場景下用到的應(yīng)該都是 unique_ptr上煤。 unique_ptr 代...
    wayyyy閱讀 1,228評論 0 1
  • C++智能指針 原文鏈接:http://blog.csdn.net/xiaohu2022/article/deta...
    小白將閱讀 6,865評論 2 21