在编程中,一个靠自身控制无法终止的程序称为“死循环”。
例如在C语言程序中,语句“while(1)printf("*");”就是一个死循环,运行它将无休止地打印*号。不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环。因此,任何编译系统都不做死循环检查。
在设计程序时,若遇到死循环,可以通过按下Ctrl+Pause/Break的方法,结束死循环。然而,在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,经常需要用到死循环。
死循环的产生原因:
死循环也可能因为多个模块之间的交互而产生。考虑一台服务器若收到无法理解的需求时,会回应错误信息,此架构中不会有死循环。
但若有二台上述的服务器(A和B),互相交换数据,A收到由B所提交无法理解的需求,会回应错误信息给B,但若B也无法理解A提交的需求(其实是A的错误信息),会再以自己的格式回应错误信息给,A收到后无法理解,会再回应错误信息给B。像邮件循环就是这类的例子。