未定义行为 Undefined behavior
在计算机进程设计中,未定义行为(英语:undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着进程员不能预测会发生什幺事。
例如,在C语言中,在任何自动对象被初始化之前,通过非字符类型的左值表达式读取这个变量存储的值会产生未定义行为,除以零或访问数组定义的界限之外的元素(参见缓冲区溢出)也会产生未定义行为。在一般情况下,之后的任何行为是不确定的;甚至只要进程的执行存在未定义行为,在引起未定义行为操作发生之前也可能不要求保证进程的行为可预测(如ISO C++)。特别地,标准从来没有要求编译器判断未定义行为,因此,如果进程调用未定义行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的实例发生时,正如语言标准所说,“什幺事情都可能发生”,也许什幺都没有发生。