之前我遇到了C语言(Visual Studio)中动态内存的问题。
我有一个基本可用的程序,但在释放其中一个缓冲区时抛出了运行时错误。这是明显的内存损坏,程序在缓冲区结束后写入了数据。
我的问题是,跟踪下来非常耗时。错误会在内存损坏后很长时间才被抛出,我必须手动调试整个运行过程,找到何时覆盖了缓冲区结尾。
有没有任何工具或方法可以帮助我解决这个问题?如果程序立即崩溃,我将更快地找到问题...
以下是问题的示例:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);