应用程序在DEBUG模式下正常工作,但RELEASE模式显示错误

时间:2016-08-24 18:43:13

标签: c++ visual-studio-2013 visual-studio-2015 release-mode

最近我将我的应用程序从Visual Studio 2013迁移到Visual Studio 2015.在DEBUG模式下一切正常,但如果我切换到RELEASE模式,则会弹出此错误:MyApp中的0x773F7FB2(ucrtbase.dll)处的未处理异常。 exe:将无效参数传递给一个认为无效参数致命的函数“(在我的应用程序中,我传递了一个指向列表的指针)。这个错误可能是什么原因? 编辑: 当我使用VS 2013时一切正常。这不是VS 2015的问题吗?

1 个答案:

答案 0 :(得分:3)

如果您想要正确的答案,您应该发布您的代码。没有它,我(我们)所能做的就是猜测。

无论如何;在发布和调试模式之间存在许多差异。除了启用/禁用优化之外,局部变量通常在调试版本中初始化(或默认初始化),但由于标准没有强制要求,因此发布版本(优化的版本)不会受到影响,因为它不会出现问题。昂贵的。这只是一个例子 - 还有更多 - 但它是我猜测咬你的那个。

无论如何;看起来你的程序包含未定义的行为 - 这基本上意味着你不能信任它正确地执行任何事情,并且优化编译器只是比在调试模式下更多地利用它。 / p>

不要编写包含未定义行为的损坏程序!它咬人。