2011-03-22 115 views
3

从什么经验我有程序编程有问题时编程崩溃,无论是来自一个无用的异常或一段代码应该已经检查错误,但没有和抛出一个。什么会导致程序将系统完全冻结到需要重新启动的地步。什么导致程序冻结

编辑:谢谢你的答案。至于语言和操作系统,这个问题受到我启发辐射的启发,游戏在一小时内冻结两次,导致我不得不重新启动xbox,所以我猜测C++。

+1

更多信息真的需要,语言OS等 – RubbleFord 2011-03-22 09:30:33

回答

2

百万不同的事情。想到的最常见的是:

  1. 产生太多的线程或进程,从而淹没OS调度程序。
  2. 吞噬太多的内存,这使内存管理器进入页面错误地狱。
+0

或无限循环/僵局... – 2011-03-22 17:24:23

2

在一个Dotnet/Java类型的环境中,它很难抓住一个系统,因为运行时让你的代码距操作系统一段距离。

接近金属说C或C++,大会等你必须公平与系统的其他部分 - 如果你没有它已经抓住了Petzold的副本,并观察/试验自己的'样板'代码来获得一个窗口中运行...

即使接近,倒在驱动程序级别的各种事情都可能发生......

2

有原因号,是导致死锁的应用程序内部或外部,更常见的情况是程序要求什么东西,但没有给出导致无限等待的东西,这样的实际例子是,程序将一些文本写入文件,但是当它打算打开文件进行写入,相同的文件被任何其他应用程序打开,因此请求应用程序将等待(如果没有正确编码,则会在某些情况下冻结),直到获得文件的独占控制权。

而导致重新启动系统的关键冻结是当请求的文件对操作系统非常重要时。但是,除非被冻结的程序是用生成本地二进制文件的语言编写的,即C/C++是精确的,否则您可能不需要重新启动系统以恢复正常。因此,如果应用程序是使用托管代码的概念编写的语言编写的,就像任何.NET语言一样,它不需要系统重新启动即可恢复正常。

+0

更接近你到操作系统,如果不仔细处理,更有可能把事情搞砸。 – Kushal 2011-03-22 09:43:32

0

页错误,试图访问无法访问数据或存储(存取权限冲突),不兼容的数据类型等

相关问题