分類:
vc/c++/c 2011-04-08 11:17
1363人閱讀
收藏舉報
單元測試
delete
apinull
byte儲存
boundschecker
是乙個run-time
錯誤檢測工具,它主要定位程式在執行時期發生的各種錯誤。boundschecker錯誤檢測範圍主要包括:(
for vs2008)
(一) 指標和洩露錯誤
(1)介面洩露。
(2)記憶體洩露。
(3)資源洩露。
(4)未分配的指標錯誤。
(5)指標的釋放問題。
(二) 記憶體錯誤
(1)動態儲存溢位。
(2)使用未初始化的記憶體。
(3)無效的控制代碼被鎖定。
(4)控制代碼沒有被鎖定。
(5)記憶體分配衝突。
(6)棧空間溢位。
(7)靜態儲存溢位。
(三) api和ole錯誤
(1)api函式返回失敗。
(2)api函式未執行。
(3)ole介面方法的變數無效。
(4)ole介面方法失敗。
(5)執行緒呼叫庫函式錯誤。
以下絕對每一點的每個item進行check。
1.指標操作和記憶體、資源洩露錯誤。
1) 記憶體洩露。(同介面洩露)
如片段程式:tchar *pszstr = new tchar[10]; 如下圖
2) 資源洩露。
如片段程式:
handle hmute = createmutex(null, true, null);程式中不呼叫closehandle,
這中情況下也可以檢測出來,如下圖:
3) 未分配的指標錯誤。
如**片段:
tchar *ptszstr = new tchar[20];
_tcscpy(ptszstr, _t("hello"));
delete ptszstr;
if(ptszstr != null)
{_tcscpy(ptszstr, _t("world"));
_tprintf(ptszstr);
用boundcheck檢測結果如下圖所示:
4) 指標的釋放問題。
如以下程式片段:
tchar *ptszstr = new tchar[20];
_tcscpy(ptszstr, _t("hello"));
delete ptszstr; //delete ptszstr;
執行結果boundcheck檢測出結果如圖:
2. 記憶體操作方面的錯誤。
1) 記憶體讀,寫溢位。
如片段程式:
tchar *pszstr = new tchar[10];
pszstr[10] = '/0';
delete pszstr;
檢測結果如下圖:
2) 使用未初始化的記憶體。
如程式片段:byte *pbydata; byte *pdestdata = pbydata;用boundcheck檢測結果如圖所示:
3. api和ole錯誤
還有挺多點未沒有比較合理的sample或者有的是boundcheck沒有檢測出來的,在以後的使用過程中如有發現其他點比較好的sample再繼續更新。
利用BouncCheck進行單元測試
boundschecker 是乙個run time 錯誤檢測工具,它主要定位程式在執行時期發生的各種錯誤。boundschecker錯誤檢測範圍主要包括 for vs2008 一 指標和洩露錯誤 1 介面洩露。2 記憶體洩露。3 資源洩露。4 未分配的指標錯誤。5 指標的釋放問題。二 記憶體錯誤 1...
利用單鏈表進行多項式運算
1.什麼是運算子過載函式?2.什麼是友元函式 3.const函式的使用與作用 4.單鏈錶能為大家做些什麼 總所周知資料結構由某一資料元素的集合和該集合中資料元素之間的關係組成,在資料儲存上我們將物理記憶體單元連續的儲存方式稱之為線性結構,例如陣列。物理記憶體單元不連續的稱之為離散結構,資料之間的鏈結...
利用DSO SLAM進行單目三維建模
direct sparse odometry dso 是業內很流行的lsd slam系統作者的學生jakob engel開發的,實測效能和精度優於lsd slam。dso已經被作者開源到 github 同時還一併開源了dso在ros系統下的使用 例項 本篇教程將演示如何在小強機械人開發平台上安裝ds...