boost庫 陣列智慧型指標scoped array

2021-07-14 10:39:27 字數 767 閱讀 3334

學習過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所有權比較函式物件時用到...