c 用智慧型指標幫我們避免記憶體洩漏問題

2021-09-29 11:21:39 字數 470 閱讀 3157

c++沒有gc機制,處理堆記憶體時就得小心,所以有了智慧型指標這個玩意。

智慧型指標可以理解為普通指標的再封裝,智慧型指標的析構函式包含了對於堆記憶體的釋放操作。

unique_ptr   同一之間只能有乙個智慧型指標指向該物件

shared_ptr  可以有多個shared_ptr指向某物件 當引用數量為0時釋放堆記憶體

weak_ptr    shared_ptr使用過程中可能發生思索問題,兩者互相引用,weak_ptr它的構造和析構不會引起引用記數的增加或減少

體現 unique_ptr 作用的例子 

#include#includeusing namespace std;

void f1()

//最後卻不釋放掉堆空間 這就造成了記憶體洩漏

}void f2()

}int main()

return 0;

}

智慧型指標auto ptr 記憶體洩漏解決

在c 11中,已經不使用auto ptr,而用 unique ptr進行替代,不過二者原理都差不多。標頭檔案 memory 智慧型指標 實質上是乙個類,在建立智慧型指標的時候,本質上是在棧上建立了乙個物件,而析構函式總是會在出棧時被呼叫,清理會自動進行。unique ptr auto ptr 通過在...

C 智慧型指標與記憶體洩漏之間的聯絡

在c 中解決記憶體洩漏的有效方法是使用智慧型指標 smart pointer 智慧型指標和普通指標的用法類似,只是不需要手動釋放記憶體,而是通過智慧型指標自己管理記憶體釋放。智慧型指標是儲存指向動態分配 堆 物件指標的類,用於生存期控制,能夠確保在離開指標所在作用域時,自動正確的銷毀動態分配的物件,...

C 11 理解智慧型指標實現原理( 記憶體洩漏)

2.智慧型指標的原理 3.智慧型指標的使用 智慧型指標是為了解決記憶體洩漏的問題。在c語言中,我們用malloc申請記憶體,free釋放記憶體 在c 中,既可以使用上述,對於自定義型別常常會用new申請,delete釋放。一旦申請,忘了釋放,就會導致記憶體洩漏。即便有的時候,delete了,但是由於...