早些时候我在 C (visual studio) 中遇到了动态内存的问题。我有一个或多或少的工作程序在释放其中一个缓冲区时引发了运行时错误。这是一个明显的内存损坏,程序写在缓冲区的末尾。
我的问题是,追踪起来非常耗时。损坏后错误被抛出,我不得不手动调试整个运行以查找何时覆盖缓冲区结束。
是否有任何工具\方法可以帮助追踪此问题?如果程序会立即崩溃,我会更快地发现问题......
问题的一个例子:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);