關於C 智慧型指標的一點認識

2022-03-15 18:17:13 字數 369 閱讀 3077

背景:

預設的c++拷貝與賦值建構函式實現的是值拷貝傳遞。當類的資料成員為指向堆上的指標時,值拷貝會使多個類的指標指向同一塊記憶體。當其中乙個類釋放這塊記憶體時,會照成其他類的這個指標空懸,從而引來風險。

智慧型指標是用來解決這類問題的方法。它最終的目的是讓多份指標安全地指向同一塊記憶體。要做到這一點,這塊被指向的記憶體只能在最後乙個指標所在的類被析構時,才被釋放。

認識:網上的資料顯示智慧型指標有引用輔助類和使用控制代碼類這兩種實現方法。但從本質上看,都是實現:

1、使得智慧型指標這個類擁有與指標相似的使用方法。(通過過載*,->等符號可以實現)

2、需要借助一塊堆上的記憶體來存放乙個計數變數。

3、當計算變數值為0時,釋放業務的記憶體和計數變數的記憶體

關於C 智慧型指標

普通指標到智慧型指標的轉換 int iptr new int 42 shared ptrp iptr 智慧型指標到普通指標的轉換 int pi p.get 注意的地方 那就是不要將智慧型指標與普通指標混用。如果專案允許,堅持使用智慧型指標,避免原生指標。智慧型指標與普通指標需要特別特別特別的小心翼翼...

智慧型指標的初步認識

開闢了記憶體空間,必定要釋放記憶體空間,如果不釋放就會造成記憶體洩漏,引發安全問題。如果 量很少的時候,我們會記得釋放掉開闢的空間,但是如果 量過大,我們會忘記開闢的空間,那麼就需要智慧型指標來幫助我們自動釋放空間。例如 include intmain 有了智慧型指標,下面的釋放空間的語句我們就不需...

c 智慧型指標的問題 智慧型指標初探(一)

為什麼要有智慧型指標 在c 中,動態記憶體的管理一般是用一對運算子完成的 new和delete。new 在動態記憶體中為物件分配一塊空間並返回乙個指向該物件的指標。delete 指向乙個動態獨享的指標,銷毀物件,並釋放與之關聯的記憶體。使用new和delete動態記憶體管理經常會出現問題 忘記釋放記...