早些时候,我遇到了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它不是真正的代码,它是一个例子,也不是我的代码......缓冲区是基于数据大小动态分配的,而计算它大小的函数有一个小错误... 除了我的问题是关于追踪问题,而不是阻止它... –