中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

segmentationfault產生的可能情況是什么

發布時間:2021-09-22 13:37:30 來源:億速云 閱讀:104 作者:小新 欄目:開發技術

小編給大家分享一下segmentationfault產生的可能情況是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  所謂的段錯誤就是指訪問的內存超出了系統所給這個程序的內存空間,通常這個值是由gdtr來保存的,他是一個48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相應于gdt的下標,最后3位包括了程序是否在內存中以及程序的在cpu中的運行級別,指向的gdt是由以64位為一個單位的表,在這張表中就保存著程序運行的代碼段以及數據段的起始地址以及與此相應的段限和頁面交換還有程序運行級別還有內存粒度等等的信息。一旦一個程序發生了越界訪問,cpu就會產生相應的異常保護,于是segmentationfault就出現了。

  什么是“SegmentationfaultinLinux”

  即“當程序試圖訪問不被允許訪問的內存區域(比如,嘗試寫一塊屬于操作系統的內存),或以錯誤的類型訪問內存區域(比如,嘗試寫一塊只讀內存)。這個描述是準確的。為了加深理解,我們再更加詳細的概括一下SIGSEGV。段錯誤應該就是訪問了不可訪問的內存,這個內存區要么是不存在的,要么是受到系統保護的。

  ?SIGSEGV是在訪問內存時發生的錯誤,它屬于內存管理的范疇

  ?SIGSEGV是一個用戶態的概念,是操作系統在用戶態程序錯誤訪問內存時所做出的處理。

  ?當用戶態程序訪問(訪問表示讀、寫或執行)不允許訪問的內存時,產生SIGSEGV。

  ?當用戶態程序以錯誤的方式訪問允許訪問的內存時,產生SIGSEGV。

  用戶態程序地址空間,特指程序可以訪問的地址空間范圍。如果廣義的說,一個進程的地址空間應該包括內核空間部分,只是它不能訪問而已

  segmentationfault產生的可能情況

  指針越界和SIGSEGV是最常出現的情況,經常看到有帖子把兩者混淆,而這兩者的關系也確實微妙。在此,我們把指針運算(加減)引起的越界、野指針、空指針都歸為指針越界。SIGSEGV在很多時候是由于指針越界引起的,但并不是所有的指針越界都會引發SIGSEGV。一個越界的指針,如果不解引用它,是不會引起SIGSEGV的。而即使解引用了一個越界的指針,也不一定會引起SIGSEGV。這聽上去讓人發瘋,而實際情況確實如此。SIGSEGV涉及到操作系統、C庫、編譯器、鏈接器各方面的內容,我們以一些具體的例子來說明。

以上是“segmentationfault產生的可能情況是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卢氏县| 霍林郭勒市| 金堂县| 乌拉特后旗| 罗江县| 庆阳市| 上蔡县| 石狮市| 井陉县| 犍为县| 郯城县| 共和县| 临朐县| 铅山县| 马尔康县| 扎囊县| 杨浦区| 四川省| 高尔夫| 江西省| 晋江市| 蕲春县| 纳雍县| 易门县| 修文县| 浏阳市| 新建县| 阳高县| 板桥市| 道孚县| 阜南县| 涿鹿县| 永顺县| 平阳县| 湟中县| 东兴市| 宝山区| 绵竹市| 疏勒县| 昌乐县| 黔东|