什麼是堆棧溢出(Stack Overflow)?

請先 登錄 後評論

1 個必威app首页

admin
由於在內存塊中沒有溢出的錯誤,所以在內存塊中沒有溢出的錯誤,這些類型的錯誤之間的差異取決於所使用的計算機數據結構,並且共同的特征是嚐試寫入比C++可用的空間更多的數據。在C++中,堆棧溢出。通常表現為分段錯誤,並且經常沒有額外的信息來確定溢出的發生地點或方式。C++棧溢出的症狀可以根據所使用的計算機語言和錯誤報告機製而變化。堆棧溢出通常表現為分段錯誤,並且通常沒有提供額外的信息來確定溢出發生在何處或如何發生的。Java中的溢出通常會導致虛擬機崩潰,並給出一個相當詳細的錯誤文件。無論溢出發生在哪種語言中,溢出幾乎總是可以通過正確的調試和識別原始溢出源來糾正。
提供顯式內存管理的計算機語言通常更容易防止堆棧溢出。廣泛接受的編程實踐通常要求內存分配的一個程序段,程序也應該刪除自己。C++允許這種機製,這樣仔細監視可以保持程序使用的內存量最小。不提供顯式內存管理的語言,而是使用隱式內存管理,更難防止堆棧溢出錯誤Java在其虛擬機中處理自己的內存,因此不能隨意顯式刪除數據以騰出更多的空間。
新手程序員的一個常見錯誤是認為在處理自己的內存管理的計算機語言中不會發生堆棧溢出。雖然這在一開始似乎是合理的,事實並非如此。具有隱式內存管理的語言通常具有釋放不必要內存塊的垃圾收集器,但這些垃圾收集器並不總是在程序員期望的時間工作。依賴垃圾收集器相對危險,它不能總是保護程序不受溢出錯誤的影響。
溢出錯誤可能是災難性的,會使整個程序停止運行,或者它們幾乎是靜默的,允許程序繼續運行。這第二種類型的錯誤通常是最難發現的,因為以前很多行代碼的溢出可能會導致錯誤。堆棧溢出通常不需要搜索整個程序,但溢出後程序運行的時間越長,則更困難的是要找到並修複錯誤
請先 登錄 後評論
  • 0 關注
  • 0 收藏,1780 瀏覽
  • 百曉生 提出於 2020-07-12 00:56

相似問題

聯係我們:uytrv@hotmail.com 最新版app下载 工具