Linux 信號


SIGSEGV與SIGBUS

SIGBUS(Bus error)意味着指針所對應的地址是有效地址,但總線不能正常使用該指針。通常是未對齊的數據訪問所致。

SIGSEGV(Segment fault)意味着指針所對應的地址是無效地址,沒有物理內存對應該地址。

SEGV_MAPERR, 地址沒有映射到對象,可能的原因是dangling pointer或者overflow,

比如

1. ptr1和ptr2指向同一段內存,但是某個線程某個時刻用ptr1將內存delete了,如果因為錯誤的設計或者假設導致認為ptr2還是指向合法的內存,使用時就會出錯;

2. 某個數組有1個元素,但是傳入的數組大小卻是2,如果我們要用2作為長度來遍歷這個數組,那當訪問第二個元素時就會出錯;

 

SEGV_ACCERR, 對映射的對象沒有權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM