缓冲区溢出错误随机出现然后消失

时间:2011-01-31 23:05:20

标签: debugging visual-c++ buffer-overflow

我的一个程序出现问题,在我向程序添加了一些函数之后突然出现了缓冲区溢出错误。错误出现在程序的最开头,这个部分与我添加的新代码完全无关。在放下几个断点以缩小bug的来源之后,错误在下一次运行时消失了。

任何人都可以在概念上向我解释什么样的情况可能会导致我遇到的问题?我不是要求你调试我的代码,而是让我对可能发生的事情有所了解,这样我就可以避免再次遇到问题。

2 个答案:

答案 0 :(得分:1)

这个bug有动态数据的气味变得太长了它的预分配(在编译时分配,我的意思是)存储阵列,但我认为错误信息“缓冲区溢出”只是一个巧合的红鲱鱼。作为第一步,我会尝试将所有静态数组的大小加倍,或者更好的是,将它们的大小增加一个大数 - 例如100,000 - 我将重新运行该程序。如果程序运行正常,那么您可以通过代码查找有问题的部分。

如果程序仍然爆炸,那么,你正面临着一个难以找到的错误。

HTH

- 皮特

答案 1 :(得分:0)

将您的代码填满ASSERT!从地狱般的经验中学习,这是我现在在处理缓冲区处理代码时自然而然的事情。