智慧型指標類模板(上) STL中的智慧型指標

2022-06-21 06:12:25 字數 831 閱讀 1152

智慧型指標類模板

智慧型指標本質上就是乙個物件,它可以像原生指標那樣來使用。

智慧型指標的意義

-現代c++開發庫中最重要的類模板之一

-c++中自動記憶體管理的主要手段

-能夠在很大程度上避開記憶體相關的問題

1.記憶體洩露,在測試階段很難發現。造成的原因就是申請堆空間中的記憶體,忘記釋放。 

2.多次指標釋放:乙個指標指向了一片堆空間中的記憶體,這片記憶體只需要釋放一次,如果在**中不小心釋放了多次,後果也是不確定的,有可能程式馬上會死掉,有可能程式過一段時間才死掉。

stl中的智慧型指標auto_ptr

-生命週期結束時,銷毀指向的記憶體空間

-不能指向堆陣列,只能指向堆物件(變數)——如果使用堆陣列,可以使用上篇部落格中的heaparray

-一片堆空間只屬於乙個智慧型指標物件

-多個智慧型指標物件不能指向同一片堆空間

auto_ptr使用初探

#include #include 

#include

using

namespace

std;

class

test

void

print()

~test()

};int

main()

stl中的其它智慧型指標

-shared_ptr

帶有引用計數機制,支援多個指標物件指向同一片記憶體

-weak_ptr

配合shared_ptr而引入的一種智慧型指標

-unique_ptr

乙個指標物件指向一片記憶體空間,不能拷貝構造和賦值

智慧型指標類模板(中) Qt中的智慧型指標

qt中的智慧型指標 qpointer 當其指向的物件被銷毀時,它會被自動置空 析構時不會自動銷毀所指向的物件 qsharedpointer 引用計數型智慧型指標 可以被自由的拷貝和賦值 當引用計數為0時才刪除指向的物件 include include using namespace std clas...

智慧型指標類模板(中) Qt中的智慧型指標

qt中的智慧型指標 qpointer 當其指向的物件被銷毀時,它會被自動置空 析構時不會自動銷毀所指向的物件 qsharedpointer 引用計數型智慧型指標 可以被自由的拷貝和賦值 當引用計數為0時才刪除指向的物件 include include using namespace std clas...

C 智慧型指標模板類

三個智慧型指標模板 auto ptr unique ptr shared ptr 條件 1 標頭檔案必須包含memory,include 2 智慧型指標模板位於命名空間std,std 或using namespace std 三者的區別 1 所有權。只能有乙個智慧型指標可以擁有乙個特定的物件。aut...