# 未定义行为

> 在计算机程序设计中，未定义行为（英语：undefined behavior）是指执行某种计算机代码所产生的结果，这种代码在当前程序状态下的行为在其所使用的语言标准中没有规定。常见于翻译器对源代码存在某些假设，而执行时这些假设不成立的情况。一些编程语言中，某些情况下存在未定义行为，以C和C++最为著名。

- ID: m01048
- 分类: behavior
- 领域: 心理学

## 定义

某些代码写法违反了语言标准，编译器可能会做任何事：可能运行正常，可能崩溃，甚至可能让电脑起飞。结果完全不可预测。脚手架作用：规避混沌边缘。在法律、合同或人际关系的灰色地带（未定义区域），不要抱有侥幸心理。虽然昨天这样做没事，但因为规则未定义，明天可能直接导致灾难性后果。尽早将UB转化为明确的定义。

## 机制

编程语言中，标准未规定结果的操作（如空指针解引用、有符号溢出）称为未定义行为（UB）。编译器可假定其不发生并据此激进优化。机制是标准留白换优化空间。

## 练习

写底层代码时避免触发 UB；不依赖任何「恰好」的运行表现；用工具（ sanitizer ）检测。

## 脚手架用法

规避混沌边缘。在法律、合同或人际关系的灰色地带（未定义区域），不要抱有侥幸心理。虽然昨天这样做没事，但因为规则未定义，明天可能直接导致灾难性后果。尽早将UB转化为明确的定义。

[阅读网页](https://thinkingmodels.site/entries/detail/m01048)
