概念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)
待验证
C标准中未定义行为(UB)允许实现在遇到该行为时做任何事,包括产生看似正确的输出、崩溃、静默数据损坏,或在优化后彻底删除相关代码。
50%待验证有符号整数溢出、数组越界读写、解引用空指针或悬垂指针、违反序列点规则、未初始化变量的读取,均被C标准明确列为未定义行为。
50%待验证编译器会假定有符号加法永不溢出,从而推出某些边界条件不可达并删除相应检查分支,这在-O2以上级别极为常见。
50%待验证在Rust中,健全性(Soundness)是指:如果编译器接受了一段代码,但该代码在运行时可能触发未定义行为,则编译器不健全。
50%待验证未定义行为(UB)指语言规范明确不保证任何行为的操作,例如解引用悬垂指针、数据竞争、越界访问等。
50%待验证Rust的设计目标是通过所有权与借用规则,在编译期静态排除绝大多数未定义行为。
50%