智慧型指標注意事項

2021-10-22 12:21:25 字數 663 閱讀 1608

1:乙個裸得指標不要使用兩個shared_ptr unique_ptr

2:用weak_ptr打破迴圈引用

3:當需要在類得內部介面中,需要將this作為智慧型指標使用,需要用該類派生自enable_shared_from_this

4:使用share_ptr作為函式介面時候,最好用 const share_ptr&

5:share_ptr weak_ptr和裸指標比,會大很多,效率有問題,特別在多執行緒下

6:enable_shared_from_this 和析構函式一樣,在析構函式建構函式最好別用

7:某些時候會出現記憶體不釋放問題,有可能是使用了weak_ptr來解決迴圈問題導致得,因為有可能指向得資源已經無效了,但是我weak_ptr還在使用導致釋放不了

8:如果有可能優先使用類得例項,萬不得已在使用unique_ptr 在退一步在使用 share_ptr

9:裸指標和智慧型指標之間強轉也會有問題

10:智慧型指標share_ptr 有跨dll記憶體釋放問題,最好用原始指標

11:智慧型指標使用多型時候很容易啞指標

sptr = make_shared(b) 等價於 a*p1 =new (b)

p1和make_shared的返回值不會指向b

12:前置宣告會導致編譯錯誤 主要原因是智慧型指標會為我們增加預設析構函式導致得

c shared ptr智慧型指標使用注意事項

shared ptr在boost中地位相當重要,其行為最接近原始指標,但又比指標更加安全,甚至還能提供基本的執行緒安全保證。它基本上解決了在使用c 開發過程中不可避免的使用指標而遇到的許多問題,常見的毫無疑問是記憶體洩漏和記憶體的提前釋放,還有一些關於指標記憶體申請而產生的異常問題等。而要想較好的使...

智慧型指標的使用注意事項

因為智慧型指標是通過引用計數的方式來進行判斷何時進行析構的,所以不要對含有智慧型指標的結構體進行memcpy,因為memcpy不會增加引用計數,從而導致錯誤 不要對智慧型指標本身進行memcpy,同樣因為memcpy不會增加引用計數,從而導致錯誤 如果結構體中放有智慧型指標,則注意不要使用memec...

學習指標注意事項

宣告指標的一般形式 資料型別 指標變數名 1 在初始化時賦值 2 在後期賦值 1 通過變數名訪問乙個變數是直接的,通過指標訪問乙個變數是間接的 2 p i 意思是取變數i的位址賦給變數p 1 指標變數名是p,而不是 p 2 指標變數不可以直接賦值 int a 100 int p p 100 編譯不能...