參見《
boost
程式庫完全開放指南》第3
章記憶體管理
所有示例,採用
vs2010
開發工具(
vs2005
也適用),均為
win32
控制台程式。
boost
庫的配置可參照:
1
、scoped_ptr
內動態管理記憶體。但所有權不能轉讓,不能進行賦值操作。
示例**如下。
#include"stdafx.h"
#include
#include
#include
using namespacestd;
using namespaceboost;
int _tmain(intargc, _tchar* argv)
2
、scoped_array
包裝了new
操作符,為動態陣列提供了乙個**。但所有權不能轉讓。
示例**如下。
#include"stdafx.h"
#include
#include
#include
using namespacestd;
using namespaceboost;
int _tmain(intargc, _tchar* argv)
3、
shared_ptr
最有價值最有用的智慧型指標。封裝記憶體建立釋放,可自由拷貝和賦值,能安全地放到標準容器中。 彌補
auto_ptr
因為轉義語義不能作為
stl容器元素的缺陷。
ps:採用
vs2010
時,發現
shared_ptr
已經是新的標準庫的乙個主要成員。
示例**如下。
#include"stdafx.h"
#include
#include
#include
using namespacestd;
using namespaceboost;
int _tmain(intargc, _tchar* argv)
另,橋接器模式的應用。
#include"stdafx.h"
#include
#include
using namespacestd;
class sample ;
classsample::impl
}; sample::sample()
: p(new impl)
voidsample::print()
int _tmain(intargc, _tchar* argv)
4
、shared_array
使用類似
shared_ptr
,包裝了
new操作符。使用引用計數機制為動態陣列提供乙個**。
說明:shared_array
不提供索引的範圍檢查,建議使用
shared_ptr
或vector
來代替。
5、
weak_ptr
shared_ptr
的助手,協助
shared_ptr
工作。不增加引用計數,不對資源進行操作,作為乙個靜靜的觀察者。
常用方法,用
lock()
從被觀測的
shared_ptr
獲得乙個可用的
shared_ptr
物件,從而操作資源。
#include"stdafx.h"
#include
#include
using namespacestd;
int _tmain(intargc, _tchar* argv)
assert(wp.use_count() == 1);
//設定shared_ptr失效
sp.reset();
assert(wp.expired());
//weak_ptr
將獲得乙個空指標
assert(!wp.lock());
return 0; }
6、
make_shared
make_shared
工廠函式代替
new操作符。
示例**如下。
#include"stdafx.h"
#include
#include
#include
#include
#include
using namespacestd;
int _tmain(intargc, _tchar* argv)
cout<
boost::shared_ptrp = v[9];
*p = 100;
cout<<*v[9]<
return 0; }
boost庫學習 智慧型指標
智慧型指標是利用raii 在物件的建構函式中執行資源的獲取 指標的初始化 在析構函式中釋放 delete 指標 這種技法把它稱之為raii resource acquisition is initialization 資源獲取即初始化 來管理資源。其本質思想是 將堆物件的生存期用棧物件 智慧型指標 ...
boost庫智慧型指標
程式的記憶體資源管理一直是個比較麻煩的問題,c 程式在引入智慧型指標之前,new出來的記憶體,需要自己手動的銷毀,自己去管理申請堆記憶體的生命週期。有的時候難免會遺漏對資源的釋放銷毀。智慧型指標則能很好的解決記憶體管理的問題,不但能很好的管理裸指標,還能管理記憶體資源 raii 機制。前借助boos...
Boost庫系列 智慧型指標
合理使用boost智慧型指標,直接記憶體釋放問題,你只管new,不需考慮delete,甚至new也不用你new 例如由make shared函式返回shared ptr智慧型指標 1 標頭檔案 智慧型指標標頭檔案 使用make unique 函式用到 使用owner less所有權比較函式物件時用到...