C 语言能否摆脱未定义行为?

Reducing undefined behavior in the C language

在 2026 年的 Kernel Recipes 会议上,Martin Uecker 探讨了 C 语言长期面临的未定义行为(Undefined Behavior)难题。尽管 C 语言以高性能和可移植性著称,但其标准中允许编译器在遇到未定义行为时做出任意处理,甚至引发所谓的“鼻中恶魔”(nasal demons)。文章指出,C23 标准已移除部分问题特性,而正在制定的 C2y 草案计划进一步消除数十种未定义行为。通过引入静态分析、Sanitizers 工具以及 CHERI 等硬件架构支持,C 语言正逐步向内存安全迈进。虽然完全消除未定义行为仍需依赖昂贵的运行时检查或形式化验证,但 C 语言作为一门活着的语言,正在通过社区协作不断进化,有望在未来实现更安全的内存模型。

标准允许编译器对未定义行为做出任何响应,甚至包括召唤鼻中恶魔。

同日更多故事

2026-10-09