我有一个缓冲区溢出,我绝对看不到(在 C 中)。首先,它只发生在大约 10% 的时间里。它每次从数据库中提取的数据在执行之间似乎并没有太大的不同……至少差异不足以让我找到任何可辨别的模式来确定它何时发生。来自 Visual Studio 的确切消息是这样的:
hub.exe 中发生缓冲区溢出,损坏了程序的内部状态。按 Break 调试程序或按 Continue 终止程序。
有关详细信息,请参阅帮助主题“如何调试缓冲区溢出问题”。
如果我调试,我发现它被破坏了__report_gsfailure()
,我很确定这是来自编译器上的 /GS 标志,并且还表示这是堆栈而不是堆上的溢出。我还可以看到它在离开时抛出的功能,但我看不到任何会导致这种行为的东西,该功能也已经存在了很长时间(10 多年,尽管有一些小的修改)据我所知,这从未发生过。
我会发布函数的代码,但它相当长并且引用了许多专有函数/变量/等。
我基本上只是在寻找一些关于我应该寻找的我没有的想法,或者一些可能有帮助的工具。不幸的是,我发现的几乎所有工具都只能帮助调试堆上的溢出,除非我弄错了,否则它在堆栈上。提前致谢。