【发布时间】:2012-06-13 15:43:58
【问题描述】:
之前我在 C (visual studio) 中遇到了动态内存问题。 我有一个或多或少的工作程序在释放其中一个缓冲区时引发了运行时错误。这是明显的内存损坏,程序写到了缓冲区的末尾。
我的问题是,追踪起来非常耗时。损坏后错误被抛出,我不得不手动调试整个运行以查找何时覆盖缓冲区结束。
是否有任何工具\方法可以帮助追查此问题?如果程序会立即崩溃,我会更快地发现问题......
问题示例:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);
【问题讨论】:
-
这不是 'Buffer Secutity Check' 编译器选项 sin VS 所做的吗?
-
不要使用幻数?
-
@phant0m 这不是真正的代码,它是一个示例,也不是我的代码......缓冲区是根据数据的大小动态分配的,计算它的大小的函数有一个小错误......除了我的问题是关于追踪问题,而不是阻止它......
-
@stijn 它有助于安全性,而不是用于调试...它不会立即崩溃...并且不会显示错误...
标签: c visual-studio-2010 visual-c++ memory-management memory-leaks