早些時候,我遇到了C(Visual Studio)中的動態內存問題。 我有一個或多或少的工作程序,釋放一個緩衝區時拋出運行時錯誤。這是一個明顯的內存損壞,該程序寫在緩衝區的末尾。調試內存損壞
我的問題是,追查非常耗時。錯誤在損壞後被拋出,我不得不手動調試整個運行,以找出緩衝區末端何時被覆蓋。
有什麼工具可以幫助追蹤這個問題嗎?如果該程序就會立即崩潰,我會發現問題快了很多......
問題的例子:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);
是不是這種什麼'緩衝區安全檢查'編譯器選項罪VS? – stijn
不要使用神奇數字? – phant0m
@ phant0m它不是真正的代碼,它是一個例子,也不是我的代碼......緩衝區是基於數據大小動態分配的,而計算它大小的函數有一個小錯誤... 除了我的問題是關於追蹤問題,而不是阻止它... –