存儲器區段錯誤
編輯在計算機中,當計算機程序試圖訪問受保護免受此類訪問的資源(特別是內存)是或不應該可用時,就會發生分段錯誤或分段違規,或簡稱段錯誤。 在這里,內核向導致錯誤的進程發送信號,這通常會導致其終止。 現代操作系統的內存保護和單片機的內存保護單元都是對其他進程和操作系統的防范。
并非每個錯誤的內存訪問都會觸發存儲區錯誤異常。 取決于一般系統狀態,因此或多或少是隨機的,一個和相同的程序錯誤可能會由于存儲區錯誤而導致崩潰,導致算術錯誤的計算結果或其他不良的系統行為,甚至根本沒有任何后果。
英文術語 segmentation fault 來自于內存區域被分段保護以防止未經授權的訪問的時代。 今天使用了其他保護機制,特別是分頁; 但是,術語分段錯誤保持不變。 不要將分段錯誤與頁面錯誤(page error)混淆,后者只會中斷程序,直到丟失的頁面從輔助存儲加載到主存儲。
在 Unix 上,分段違規會引發 SIGSEGV 異常(異常十進制 11,十六進制 B,0x0B)。 對于 IA-32 或 x86 處理器,通過中斷觸發的內存訪問沖突稱為一般存儲區錯誤(十進制 13 異常,十六進制 D,0x0D)。
例子
編輯存儲區錯誤的大量出現表明操作系統、驅動程序、編程語言或程序在概念上存在缺陷。 錯誤信息“一般存儲區錯誤in”后跟一個十六進制地址,早期Microsoft Windows版本下的程序經常崩潰(所謂的藍屏死機)被廣大觀眾記住。
頻繁出現存儲區錯誤的原因也可能是內存有問題或其他硬件有問題。 由于硬件錯誤(例如,更改地址的一位就足夠了),會處理意外地址。 超頻或錯誤編程的設備驅動程序也可能觸發此類錯誤,而無需出現缺陷。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/366170/