gpt4 book ai didi

c - 需要有关缓冲区溢出的帮助

转载 作者:太空狗 更新时间:2023-10-29 15:27:57 27 4
gpt4 key购买 nike

我遇到了一个缓冲区溢出问题,我绝对无法弄清楚(在 C 中)。首先,它可能只发生 10% 左右的时间。它每次从数据库中提取的数据在执行之间似乎并没有太大的不同……至少没有足够的不同让我找到任何可辨别的模式来判断它何时发生。来自 Visual Studio 的确切消息是这样的:

A buffer overrun has occurred in hub.exe which has corrupted the program's internal state. Press Break to debug the program or Continue to terminate the program.

For more details please see Help topic 'How to debug Buffer Overrun Issues'.

如果我调试,我发现它在 __report_gsfailure() 中被破坏,我很确定它来自编译器上的/GS 标志,并且还表示这是堆栈溢出而不是堆。我还可以看到它在离开时抛出的功能,但我看不到任何会导致这种行为的功能,该功能也存在了很长时间(10 多年,尽管有一些小的修改)据我所知,这从未发生过。

我会发布该函数的代码,但它相当长并且引用了很多专有函数/变量/等。

我基本上只是在寻找一些关于我应该寻找但我还没有找到的东西的想法,或者可能是一些可能有用的工具。不幸的是,我发现的几乎所有工具都只能帮助调试堆上的溢出,除非我弄错了,否则它在堆栈上。提前致谢。

最佳答案

您可以尝试将一些局部变量放在缓冲区的两端,甚至将哨兵放入(稍微扩展的)缓冲区本身,如果这些值不是您认为应该的值,则触发断点。显然,使用数据中不太可能出现的模式是个好主意。

关于c - 需要有关缓冲区溢出的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com