这不是关于我的代码的特定问题,而是一个更高的问题。
我的C 代码在发行和调试模式中编译(都打开了主张)
库中没有任何代码检查调试等(通过prerocssor定义或宏)。
在调试模式下运行不会引起任何断言。在发行或RelwithDebinfo中运行每次都会提出一个断言。
这是否一定意味着MSVC编译器/优化器中存在错误?同样,更一般而言:发布和调试之间的程序行为差异始终构成编译器中的错误。
注意:clang运行此代码罚款,而不会在发行版和调试中投掷断言。
这种东西几乎从来都不是编译器错误。如果您的代码由于流浪指针而覆盖数据,则当您使用不同的选项进行编译时,它可以覆盖不同的数据,结果却大不相同。