學習過c++的開發人員,都知道在c++裡陣列指標與一般的指標是有區別的。比如使用陣列形式分配的記憶體,就需要使用陣列的形式刪除。但初學開發的開發人員,往往會忘記這點,在我過去10多年的軟體**審查過程裡,經常發現這點,如下面所示:
char* pbuf = new char[256];
......這裡使用
delete pbuf;
在最後這行**上,就使用出錯了。應該使用陣列的形式刪除,否則只刪除了乙個元素占用的記憶體,其它所有占用的記憶體就變成記憶體洩漏了。為了避免這種情況,有什麼好方法嗎?在stl庫里沒有提供比較好的智慧型指標,現在boost庫提供了這種智慧型指標了,它就是scoped_array。希望所有分配陣列的記憶體,都使用這種方式來分配,不但可以避免刪除時出錯,也可以防止記憶體洩漏,提供更加安全的機制。具體的使用方式如下:
[cpp]view plain
copy
//#include "stdafx.h"
#include
#include
#include
//使用scoped_array
//軟體開發人員: 蔡軍生 2013-02-03
void
test(
void
) //重新設定為新分配的記憶體。
ptemp.reset(new
byte
[64]);
} int
_tmain(
intargc, _tchar* argv)
boost庫智慧型指標
程式的記憶體資源管理一直是個比較麻煩的問題,c 程式在引入智慧型指標之前,new出來的記憶體,需要自己手動的銷毀,自己去管理申請堆記憶體的生命週期。有的時候難免會遺漏對資源的釋放銷毀。智慧型指標則能很好的解決記憶體管理的問題,不但能很好的管理裸指標,還能管理記憶體資源 raii 機制。前借助boos...
Boost庫智慧型指標學習
參見 boost 程式庫完全開放指南 第3 章記憶體管理 所有示例,採用 vs2010 開發工具 vs2005 也適用 均為 win32 控制台程式。boost 庫的配置可參照 1 scoped ptr 內動態管理記憶體。但所有權不能轉讓,不能進行賦值操作。示例 如下。include stdafx....
Boost庫系列 智慧型指標
合理使用boost智慧型指標,直接記憶體釋放問題,你只管new,不需考慮delete,甚至new也不用你new 例如由make shared函式返回shared ptr智慧型指標 1 標頭檔案 智慧型指標標頭檔案 使用make unique 函式用到 使用owner less所有權比較函式物件時用到...