系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux編程出現(xiàn)Segmentation fault

Linux編程時出現(xiàn)Segmentation fault錯誤的處理辦法

時間:2016-01-28 16:22:52 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20160128/66482.html 手機(jī)查看 評論

  有些開發(fā)者在Linux下進(jìn)程編程,使用GDB調(diào)試時發(fā)現(xiàn)了一個Segmentation fault錯誤。這個錯誤主要是訪問了錯誤的內(nèi)存段引起的,可能是沒有權(quán)限或者是內(nèi)存段不存在,這個問題如何處理呢?

Linux編程時出現(xiàn)Segmentation fault錯誤的處理辦法

  方法如下:

  這個錯誤是怎么導(dǎo)致的呢?原來是在定義一個char類型的指針,然后就直接對這個指針進(jìn)行字符串的相關(guān)操作。例如:

  char *c1;

  for(i=0; i《n;i++)

  {

  *c1 = getchar();

  c1++;

  }

  代碼意思大概是這樣,這是很多開發(fā)者會犯的問題。這個指針危險啊,要謹(jǐn)慎對待,就拿這里來說,這樣給指針賦值,我們并不知道這指針指向的是哪里呢,如果寫的數(shù)據(jù)覆蓋了關(guān)鍵區(qū)域數(shù)據(jù)那可能會有災(zāi)難性的后果,這就是訪問了不該訪問的地方。解決的辦法是什么呢,告訴這個指針到該到的地方,我用malloc為該指針將要指向的字符串申請一段空間,這樣就會指明系統(tǒng)分配一段安全的空間,不會在把內(nèi)存關(guān)鍵區(qū)域分給你了。這樣你就可以安全操作了。

  這個例子告訴我們指針是不能亂用的,如果指針指向錯誤的內(nèi)存,導(dǎo)致編程時出現(xiàn)Segmentation fault錯誤,還可以用上面的辦法處理,如果指向其他區(qū)域,還會導(dǎo)致更嚴(yán)重的后果。

標(biāo)簽 系統(tǒng)錯誤

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨(dú)特見解

立即評論

以上留言僅代表用戶個人觀點(diǎn),不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

官方交流群 軟件收錄