出現segment fault 錯誤的幾種原因

2022-03-24 08:08:31 字數 816 閱讀 5523

segment fault 段異常各種原因

www.myexception.cn 發布於:2012-11-26 11:48:50 瀏覽:24次 0

segment fault 段錯誤各種原因

一 造成segment fault,產生core dump的可能原因

1.記憶體訪問越界

a) 由於使用錯誤的下標,導致陣列訪問越界

b) 搜尋字串時,依靠字串結束符來判斷字串是否結束,但是字串沒有正常的使用結束符

c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字串操作函式,將目標字串讀/寫爆。應該使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函式防止讀寫越界。 陣列開小了 我曾在這地方吃過虧了

2 多執行緒程式使用了執行緒不安全的函式。

3 多執行緒讀寫的資料未加鎖保護。對於會被多個執行緒同時訪問的全域性資料,應該注意加鎖保護,否則很容易造成core dump

4 非法指標

a) 使用空指標

b) 隨意使用指標轉換。乙個指向一段記憶體的指標,除非確定這段記憶體原先就分配為某種結構或型別,或者這種結構或型別的陣列,否則不要將它轉換為這種結構或型別的指標,而應該將這段記憶體拷貝到乙個這種結構或型別中,再訪問這個結構或型別。這是因為如果這段記憶體的開始位址不是按照這種結構或型別對齊的,那麼訪問它時就很容易因為bus error而core dump.

5 堆疊溢位.不要使用大的區域性變數(因為區域性變數都分配在棧上),這樣容易造成堆疊溢位,破壞系統的棧和堆結構,導致出現莫名其妙的錯誤。

Segment fault 常見原因

1.引用空指標 2.野指標 3.訪問越界 造成的原因有多種 主觀原因 1.新申請指標忘記賦null,也忘記分配空間,直接使用造成非法訪問。2.為指標賦值時,位址經過計算而來。計算過程有問題,導致賦值的位址不正確,比如位址經過計算涉及到型別轉換之類操作,很容易因為型別轉換造成截斷。客觀原因 3.儲存指...

sublime anaconda載入出現錯誤

錯誤如下 原因 anaconda外掛程式連線jsonserver服務出現錯誤 可能是,當anaconda外掛程式嘗試連線jsonserver服務時,該服務暫未啟動,所以之後在console中輸入import socket socket.socket socket.af inet,socket.soc...

開啟我的segmentfault之旅

也不知道想說些啥,工作一年多的時間吧。總體來說,收貨不是很大,還是需要自己私下多多開闊一些視野,那怕是去死鑽那些最基礎的知識也好,第一篇,就說說自己的缺點吧。下面是自己寫的乙個工具類中的方法,測試一下sf是不是像廣大愛好者說的那麼的好用。方法名稱 arrayinsertarray 描述 陣列插入到另...