一般來講,對非法地址的訪問會導致應用程式收到由系統發送的sigsegv信號,預設情況下,函數對於這個信號的處理是退出。 但是為了方便調試,我們可以自己設置處理函數,使用signal函數。 這裡比較重要的一點是,按照流程,cpu取完一條指令時,pc會指向下一條指令,那麼如果我們指定函數對sigsegv ...
一般來講,對非法地址的訪問會導致應用程式收到由系統發送的sigsegv信號,預設情況下,函數對於這個信號的處理是退出。
但是為了方便調試,我們可以自己設置處理函數,使用signal函數。
這裡比較重要的一點是,按照流程,cpu取完一條指令時,pc會指向下一條指令,那麼如果我們指定函數對sigsegv信號不處理的話,那麼就可以跳過出現錯誤的語句而直接執行下一條語句。
但是linux系統對於從數據異常返回時,會把pc重新指向該語句,所以根本沒辦法跳過這句話。