2011-01-31 182 views
1

我在程序中添加了一些功能后,突然出现缓冲区溢出错误,其中一个程序出现问题。这个错误在程序的最开始就出现了,这一部分与我添加的新代码完全无关。放下几个断点以缩小错误来源后,错误在下一次运行中消失。随机出现然后消失的缓冲区溢出错误

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

+2

总是鬼鬼祟祟的他们heisenbugs,嗯? – thkala 2011-01-31 23:11:00

+0

heisenbug ...有趣的词,适合说至少。 – Faken 2011-01-31 23:20:36

回答

1

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

如果程序仍然爆炸,那么您正面临一个难以找到的bug。

HTH

- 皮特

0

填写您的代码充满了断言!从地狱般的经验中学习,这是我现在在处理缓冲区处理代码时自然而然地做的。