Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> 關於Linux >> Linux編程時出現Segmentation fault錯誤的處理辦法

Linux編程時出現Segmentation fault錯誤的處理辦法

日期:2017/1/25 10:15:01      編輯:關於Linux

  有些開發者在Linux下進程編程,使用GDB調試時發現了一個Segmentation fault錯誤。這個錯誤主要是訪問了錯誤的內存段引起的,可能是沒有權限或者是內存段不存在,這個問題如何處理呢?

Linux編程時出現Segmentation fault錯誤的處理辦法

  方法如下:

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

  char *c1;

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

  {

  *c1 = getchar();

  c1++;

  }

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

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

Copyright © Windows教程網 All Rights Reserved