2011-03-22 83 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

頁錯誤,試圖訪問無法訪問數據或存儲(存取權限衝突),不兼容的數據類型等