诸暨汉妇网络科技有限公司

電腦技術(shù)網(wǎng) - 從此開始了解電腦、科技、手機、智能硬件、網(wǎng)絡(luò)相關(guān)的各項適用知識!

電腦技術(shù)網(wǎng)_it資訊_游戲攻略_手機教程_電腦教程_無線路由器設(shè)置_設(shè)置無線路由器_辦公軟件教程_電腦系統(tǒng)安裝_電腦維修知識

Linux編程時出現(xiàn)Segmentation fault錯誤如何解決?

欄目:Linux 系統(tǒng)技巧
已被:人瀏覽過
本文主要介紹:Linux編程時出現(xiàn)Segmentation fault錯誤如何解決?今天小編要為大家分享的就是Linux編程時出現(xiàn)Segmentation fault錯誤的處理辦法,有需要的朋友可以參考下

有些開發(fā)者在Linux下進程編程,使用GDB調(diào)試時發(fā)現(xiàn)了一個Segmentation fault錯誤。這個錯誤主要是訪問了錯誤的內(nèi)存段引起的,可能是沒有權(quán)限或者是內(nèi)存段不存在,這個問題如何處理呢?下面小編將為大家?guī)鞮inux編程時出現(xiàn)Segmentation fault錯誤的處理辦法,一起去看看吧。

方法如下:

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

char *c1;

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

{

*c1 = getchar();

c1++;

}

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

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

本文地址: http://www.laotiku.cn/linux/3494.html 手機版

相關(guān)推薦Related Recommendations