boost庫 shared ptr實際應用

2021-04-19 18:08:56 字數 566 閱讀 7109

1、記憶體**方式。

預設的shared_ptr以delete銷毀所擁有的裸指標,然而在實際應用中,特別是網遊伺服器這種存在著大批量物件建立、銷毀的工程,單一的銷毀方式就不再適用了。畢竟在上述環境下,採用memory pool做記憶體管理會更好。而這樣**動作也需由自己來控制,不再是單單乙個delete了事。

細看了shared_ptr的原始碼,它的刪除動作是由以下**做到的:

template

inline

void checked_delete(t * x)

ok, 乙個模板函式,這樣做起來就簡單了,我們只需要根據自己的物件特化出乙個自己的版本就行,如下:

namespace boost};

2、操作符

通常選擇shared_ptr,都會將其與stl container相結合使用。而stl很多泛型演算法都需要容器所存物件的比較操作符。

我們避免將裸指標存入stl容器,就是因為裸指標無法提供所指物件的比較操作。

回頭再來看下shared_ptr,它的原始碼中也沒有提供比較操作符,那我們就自己做乙個,如下:

namespace boost};

Boost智慧型指標 shared ptr

boost scoped ptr雖然簡單易用,但它不能共享所有權的特性卻大大限制了其使用範圍,而boost shared ptr可以解決這一侷限。顧名思義,boost shared ptr是可以共享所有權的智慧型指標,首先讓我們通過乙個例子看看它的基本用法 該程式的輸出結果如下 the sample...

Boost智慧型指標 shared ptr

boost scoped ptr雖然簡單易用,但它不能共享所有權的特性卻大大限制了其使用範圍,而boost shared ptr可以解決這一侷限。顧名思義,boost shared ptr是可以共享所有權的智慧型指標,首先讓我們通過乙個例子看看它的基本用法 include include inclu...

Boost智慧型指標 shared ptr

boost scoped ptr雖然簡單易用,但它不能共享所有權的特性卻大大限制了其使用範圍,而boost shared ptr可以解決這一侷限。顧名思義,boost shared ptr是可以共享所有權的智慧型指標,首先讓我們通過乙個例子看看它的基本用法 include include inclu...