前言
我們在使用c和c++進行開發的時候,申請堆區記憶體是必不可少的,但是很多時候,我們經常忘記釋放他導致記憶體洩漏,從而導致程式崩潰,又或者在尚未使用完成的時候釋放,從而導致出現野指標,都是非常危險的現象,所以我們在c++11的標準中提出了智慧型指標的概念,他就是一種可以幫我們自動釋放記憶體的存在
共享智慧型指標 - shared_ptr
他是使用最多的智慧型指標,它可以讓多個指標指向同一片記憶體,同時在這片記憶體指向變為0的時候,他就會被釋放
他有三種構造方式
//直接構造
shared_ptr<
int>
ptr(
newint(10
));//使用make_shared
shared_ptr<
int>ptr1=make_shared<
int>(9
);//直接賦值
shared_ptr<
int>ptr2=ptr1;
同樣你還可以使用他的一些成員函式
get()//獲取當前指標
swap()//交換管理物件
reset()//對指標進行重置操作,使原有指向修改為新的指向,該函式會
首先將原有記憶體減1,當減小為0會釋放記憶體
use_conut()
//智慧型指標指向記憶體引用計數
同樣的,智慧型指標只能管理一片記憶體,要是管理陣列需要手動釋放
//智慧型指標只能管理一塊記憶體, 要是想管理陣列, 需要手動釋放
//智慧型指標管理陣列, 需要自己指定lamb表示式自己釋放
shared_ptr
ptr4
(new a[5]
,[](a *p)
);
唯一智慧型指標 - unique_ptr
只允許乙個智慧型指標指向這塊記憶體
//直接構造
unique_ptr<
int>
ptr(
newint(10
));//使用make_shared,在linux環境下無法使用
unique_ptr<
int>ptr1=make_shared<
int>(9
);
弱指標 -weak_ptr
這個使用的很少,主要是為了解決迴圈引用導致的記憶體洩露,引入了弱指標,他不會計入共享指標的數值,所以他不會對記憶體進行管理,主要是用來檢測是否被釋放
記憶體管理 智慧型指標之shared array
shared array類似shared ptr,它包裝了new操作符在堆上分配的動態陣列,同樣使用引用計數機制為動態陣列提供了乙個 可以在程式的生命同期裡長期存在,直到沒有任何引用後才釋放記憶體。類摘要 templateclass shared array shared array與shared ...
c 智慧型指標與記憶體管理
c 中當我們需要新分配記憶體的時候需要手動的去呼叫new顯式的分配一塊記憶體,如果我們在任何中new 如函式中申請空間返回 忘記釋放,或者在 函式執行過程中出現異常,沒 有執行釋放語句 了空間,在不需要使用後忘記了呼叫delete這塊位址的話就會造成 記憶體洩露。為了解決這乙個問題引入了智慧型指標。...
管理指標成員(智慧型指標)
簡單記錄下我的學習過程 為主 題外話 過幾天就要出去找工作了。這幾天在家看看曾經做過的題。如今想想時間過得真的好快,希望自己能找乙份自己愜意的工作。以下是學習心得 這幅圖非常好的闡述了僅僅能指標的概念,事實上智慧型指標就是乙個計數類!以後多用用就熟悉了。設計介面 int get ptr const ...