【发布时间】:2012-10-11 04:10:42
【问题描述】:
这个问题有很多很好的答案,解释了为什么错误可能只在发布版本中表现出来。
Common reasons for bugs in release version not present in debug mode
我有一个关于未定义行为的更具体的问题。
如果程序在 Debug 版本中似乎总是可以正常工作,但在发布版本中表现不同(但总是以相同的不正确方式运行),那么问题是否是由于未定义的行为?
【问题讨论】:
-
未定义的行为可能导致任何事情,所以是的。
-
当然这可能是由于未定义的行为。但是这里的编码问题到底是什么?
-
行为是未指定,因此它可能导致任何事情发生,甚至可能导致nasal demons。
-
“可以有未定义的行为” -- 是的。
-
@Rabenholz:为什么重要?你不能对未定义的行为进行推理,因为它在定义上是未定义的。因此,您可能会在两台不同的机器上看到完全相同的 UB 结果,或者您可能会看到完全不同的结果。没关系,就 C++ 标准而言,允许未定义的行为代码做任何事情。
标签: c++ undefined-behavior release-mode debug-mode