从VS2005转换为VS2008的项目中的缓冲区溢出错误

时间:2011-01-13 16:23:49

标签: visual-studio-2008

我在从VS2005转换为VS2008的项目中出现缓冲区溢出错误。 我想知道是否有任何工具可以帮助找到缓冲区溢出的位置。

2 个答案:

答案 0 :(得分:0)

我假设您使用的是c ++。

在microsoft c ++中,有一个编译器开关/GS来查明是否存在缓冲区溢出。有关详细信息及其工作原理,请参阅MSDN Compiler Security Checks In Depth

至少在c#-developpment中(但希望也在c ++中)有一个调试器选项 “如果异常是......则中断”,如果抛出异常则停止程序执行(因为c ++运行时检测到存在缓冲区溢出。在vs2010中,它处于Debug / Exceptions ...

您还可以使用扫描源代码的Microsofts PREfast来查找可能不安全的函数(strcpy)

答案 1 :(得分:0)

由于sprintf的行为不同,非空终止字符串被写入数组边界之外。这反过来又破坏了堆栈并导致缓冲区溢出。 Visual Studio中的/ GS开关报告缓冲区溢出,因此可以帮助找出系统崩溃的原因。