断言在释放中抛出,但不进行调试 - 一定是编译器错误



这不是关于我的代码的特定问题,而是一个更高的问题。

我的C 代码在发行和调试模式中编译(都打开了主张)

库中没有任何代码检查调试等(通过prerocssor定义或宏)。

在调试模式下运行不会引起任何断言。在发行或RelwithDebinfo中运行每次都会提出一个断言。

这是否一定意味着MSVC编译器/优化器中存在错误?同样,更一般而言:发布和调试之间的程序行为差异始终构成编译器中的错误。

注意:clang运行此代码罚款,而不会在发行版和调试中投掷断言。

这种东西几乎从来都不是编译器错误。如果您的代码由于流浪指针而覆盖数据,则当您使用不同的选项进行编译时,它可以覆盖不同的数据,结果却大不相同。

最新更新