boost的指標智慧型指標(shared ptr)

2021-09-21 01:44:30 字數 1086 閱讀 4262

boost智慧型指標常用的函式

get()獲取原始指標

bool unique()檢測是否唯一

long use_count()引用計數

void swap()交換指標

reset()將引用計數減1,停止對指標的共享,除非引用計數為0,否則不會發生刪除操作。

shared_ptrspi(new int);//乙個int型的shared_ptr

assert(spi);//在bool語境中轉換為bool值,因為()被過載轉化為bool值

*spi = 253; //使用解引用操作符*

shared_ptrsps(new string("smart"));//乙個string的shared_ptr

assert(sps->size() == 5);//使用箭頭操作符

shared_ptrdont_do_this(new int[10]);//危險!不能正確釋放記憶體

typedef shared_ptrsp_t;//shared_ptr型別定義

mapm;//標準容器

sp_t sp(new string("one"));//乙個shared_ptr物件

m[sp] = 111;//關聯陣列用法

乙個完整的例子:

#include #include int main()

第二個例子:

#include #include class shared

void print() };

void print_func(boost::shared_ptrp)

int main()

執行結果:

在宣告了shared_ptr和兩個shared類之後,指標被他們共享了,因此引用指標計數為3.print_func()函式內部拷貝了乙個shared_ptr物件,因此引用指標計數再增加1,但是當退出函式時拷貝自動析構,引用計數又恢復為3.

boost 智慧型指標

boost shared ptr 的記憶體管理機制 boost shared ptr 的管理機制其實並不複雜,就是對所管理的物件進行了引用計數,當新增乙個 boost shared ptr 對該物件進行管理時,就將該物件的引用計數加一 減少乙個 boost shared ptr 對該物件進行管理時,...

boost 智慧型指標

最近使用boost的智慧型指標,檢視了一些帖子。總結如下 智慧型指標分類 智慧型指標使用注意事項 多執行緒安全性分析 這個帖子的結論很好,1 shared ptr是乙個非常實用的智慧型指標。2 shared ptr的實現機制是在拷貝構造時使用同乙份引用計數。3 對同乙個shared ptr的寫操作不...

boost 智慧型指標

shared 指標類似於乙個帶計數器的指標,當指標計數次數為0時,它將自動析構物件。shared ptr指標可通過一次new出來,一直向下傳遞,直到每次析構shared ptr時將該指標引用量 1 注 每次進行不帶引用的傳遞時呼叫次數會加1,但析構時同時會 1,若用引用傳遞,每次呼叫值不增加,但同樣...