C 智慧型指標weak ptr的學習筆記

2021-10-04 08:59:18 字數 1023 閱讀 2655

weak_ptr 智慧型指標是為了解決shared_ptr相互引用導致的死鎖問題,它不控制物件的生命週期,不會增加物件的引用次數,和shared_ptr可以相互轉化,是一種弱應用。

下面的**就陷入了死鎖,p1和p2相互引用導致計數一直為1,而物件得不到銷毀。

借助weak_ptr指標**

#include

#include

using

namespace std;

class

dogdog

(string name)

void

makefriend

(shared_ptr f)

void

foo()~

dog(

)private

: weak_ptr ptr_friend;

//此處設定為weak_ptr

物件成功銷毀。

C 智慧型指標 weak ptr

weak ptr 是一種不控制物件生命週期的智慧型指標,它指向乙個 shared ptr 管理的物件.進行該物件的記憶體管理的是那個強引用的 shared ptr.weak ptr只是提供了對管理物件的乙個訪問手段.weak ptr 設計的目的是為配合 shared ptr 而引入的一種智慧型指標來...

智慧型指標weak ptr

智慧型指標weak ptr主要用來協助shared ptr。不參與引用計數,但是有以下好處 1 打破遞迴的依賴關係 2 使用乙個共享的資源但是不要所有權,不新增引用計數 3 避免懸空指標。使用方法有二 方法一 boost shared ptrsp new std string method1 從sh...

智慧型指標 weak ptr

weak ptr是為了配合shared ptr而引入的一種智慧型指標,它更像是shared ptr的乙個助手而不是智慧型指標,因為它不具有普通指標的行為,沒有過載operator 和 它的最大作用在於協助shared ptr工作,像旁觀者那樣觀測資源的使用情況.用法 weak ptr被設計為與sha...