乙個小夥伴開開心心寫了一段資料夾刪除**,不過在自測的時候出現了事故。
整個c盤檔案被一掃而空,不得不重灌系統,珍藏資料也難以找回。
先上原始碼。警告:此原始碼切勿執行
#include
std::wstring dirbackslashalign
(const std::wstring& strdir)
return strtemp;
}void
deletedirrecursively
(const std::wstring& dirname)
else
}while
(findnextfile
(hfind,
&fd));
findclose
(hfind)
; hfind = invalid_handle_value;
}//防止誤執行,此**做遮蔽
//::setfileattributes(dirname.c_str(), file_attribute_normal);
//::removedirectory(dirname.c_str());
}void
runtest()
問題出在**呢?一步步推斷看下。
知道了問題原因,就可以做修復了,做下入參有效性判斷。
**如下。
#include
"shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
void
deletedirrecursively
(const std::wstring& dirname)
針對這次p0級別的問題修復,對函式入參做防禦性有效性判斷永遠都是對的。 c 記憶體分配中乙個有趣的小問題
toc 以下 測試環境 vs2019 問題的提出 執行這麼一段 看看會發生什麼 c int arr 5 int main 毫無疑問,會報錯,因為訪問越界了。再看看另一段 c int arr 5 int main 與上面的 相比幾乎沒什麼差別,僅僅把arr的定義和初始化搬到了函式外面,但執行程式卻沒有...
C語言中乙個strcmp和 的比較問題
在問答上看到乙個問題,本著賺金幣的態度就回答了一下。話說遇到我這樣的小白會的問題的機率真心不大,趕緊答乙個。c 中strcmp和 的比較問題 c strcmp char str1 hello char str2 hello if str1 hello printf ok1 n if str2 hel...
C 中乙個關於複製建構函式和指標的問題
copy建構函式是顯式地去處理乙個物件初始化另乙個物件的問題,如果類含有乙個指標的話,那麼處理起來主要分為兩種情況。a.指標在類的構造或者初始化時指向動態分配的記憶體,並在物件析構時對該指標進行delete操作,釋放記憶體資源。這種情況下,對指標的操作是萬萬不能簡單對指標位址進行賦值操作的。應該是動...