以前、C (ビジュアル スタジオ) の動的メモリで問題が発生しました。バッファの 1 つを解放するときに実行時エラーをスローする、多かれ少なかれ機能するプログラムがありました。これは明らかなメモリ破損であり、プログラムはバッファの末尾を上書きしました。
私の問題は、追跡に非常に時間がかかることです。破損後にエラーがスローされたため、実行全体を手動でデバッグして、バッファの終わりがいつ上書きされたかを確認する必要がありました。
この問題の追跡を支援するツールはありますか? プログラムがすぐにクラッシュしていたら、もっと早く問題を発見できたでしょう...
問題の例:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);