A.5. 未定义行为(UB)

未定义行为(Undefined behavior),常简称为 UB,是指由标准未规定具体行为的情况所导致的结果。在 C++ 标准中,UB 指的是那些没有施加要求的行为。它可能导致问题被忽略,也可能导致诊断信息或程序终止。关键在于,如果程序包含未定义行为,那它就不再遵循语言的规则,程序是错误的;其行为在你的平台上无法得到保证,也无法在不同平台或编译器之间移植,更无法依赖。

一个编写正确的 C++ 程序不应该有未定义行为。当面对一个包含未定义行为的函数时,编译器几乎可以对该函数中的代码做任何处理,这使得从源码进行推理变得几乎不可能。

未定义行为是第 2 章中列出的“需要特别小心的事物”之一。应努力避免未定义行为:如果不将其修复,它迟早会反噬你。