我遇到了一个无法解决的缓冲区溢出错误(在C语言中)。首先,它只会发生大约10%的时间。每次从数据库获取的数据似乎并没有太大的不同...至少不足以让我找到任何明显的模式来确定它发生的原因。 Visual Studio 给出的确切信息如下:
"hub.exe 中发生了缓冲区溢出,已破坏程序的内部状态。请按 Break 调试该程序或按 Continue 终止该程序。有关详细信息,请参阅帮助主题 '如何调试缓冲区溢出问题'。"
如果我进行调试,我发现它在 __report_gsfailure() 函数中断,我很确定这是编译器上 /GS 标志的结果,也意味着这是堆栈而不是堆的溢出。我还可以看到它抛出异常的函数,但我找不到任何可能导致此行为的内容。该函数已经存在了很长时间(10多年),尽管进行了一些小的修改,但据我所知,从未发生过这种情况。
我想贴出该函数的代码,但它相当长,并引用了许多专有的函数/变量等。
我基本上只是在寻找一些我可能还没有注意到的东西,或者一些可能有帮助的工具。不幸的是,我找到的几乎每个工具都只能帮助调试堆上的溢出,除非我错了,否则这是在堆栈上发生的。谢谢您的帮助。
"hub.exe 中发生了缓冲区溢出,已破坏程序的内部状态。请按 Break 调试该程序或按 Continue 终止该程序。有关详细信息,请参阅帮助主题 '如何调试缓冲区溢出问题'。"
如果我进行调试,我发现它在 __report_gsfailure() 函数中断,我很确定这是编译器上 /GS 标志的结果,也意味着这是堆栈而不是堆的溢出。我还可以看到它抛出异常的函数,但我找不到任何可能导致此行为的内容。该函数已经存在了很长时间(10多年),尽管进行了一些小的修改,但据我所知,从未发生过这种情况。
我想贴出该函数的代码,但它相当长,并引用了许多专有的函数/变量等。
我基本上只是在寻找一些我可能还没有注意到的东西,或者一些可能有帮助的工具。不幸的是,我找到的几乎每个工具都只能帮助调试堆上的溢出,除非我错了,否则这是在堆栈上发生的。谢谢您的帮助。