[控场AI]
概念UB / Undefined Behavior

未定义行为

ISO C标准中允许编译器对特定代码做任意处理的语义类别,包括产生看似正确的输出、崩溃、静默数据损坏或删除相关代码,常见场景有符号整数溢出、数组越界、空指针解引用等

时间轴 (近 90 天)

10月15日

C标准中未定义行为(UB)允许实现在遇到该行为时做任何事,包括产生看似正确的输出、崩溃、静默数据损坏,或在优化后彻底删除相关代码。

待验证50%
10月15日

有符号整数溢出、数组越界读写、解引用空指针或悬垂指针、违反序列点规则、未初始化变量的读取,均被C标准明确列为未定义行为。

待验证50%
10月15日

编译器会假定有符号加法永不溢出,从而推出某些边界条件不可达并删除相应检查分支,这在-O2以上级别极为常见。

待验证50%
10月13日

在Rust中,健全性(Soundness)是指:如果编译器接受了一段代码,但该代码在运行时可能触发未定义行为,则编译器不健全。

待验证50%
10月13日

未定义行为(UB)指语言规范明确不保证任何行为的操作,例如解引用悬垂指针、数据竞争、越界访问等。

待验证50%
10月13日

Rust的设计目标是通过所有权与借用规则,在编译期静态排除绝大多数未定义行为。

待验证50%

全部知识事实 (6)

来源文章