在Linux上編寫運行C語言程序,經(jīng)常會遇到程序崩潰、卡死等異常的情況。程序崩潰時最常見的就是程序運行終止,報告Segmentation fault (core dumped)錯誤。而程序卡死一般來源于代碼邏輯的缺陷,導致了死循環(huán)、死鎖等問題??偟膩砜?,常見的程序異常問題一般可以分為非法內(nèi)存訪問資源訪問沖突兩大類。

seo優(yōu)化培訓,網(wǎng)絡(luò)推廣培訓,網(wǎng)絡(luò)營銷培訓,SEM培訓,網(wǎng)絡(luò)優(yōu)化,在線營銷培訓

  1. 非法內(nèi)存訪問(讀/寫):非法指針、多線程共享數(shù)據(jù)訪問沖突、內(nèi)存訪問越界、緩沖區(qū)溢出等。

  2. 資源訪問沖突:棧內(nèi)存溢出、堆內(nèi)存溢出、死鎖等。

一、非法內(nèi)存訪問

非法內(nèi)存訪問是最常見的程序異樣原因,可能開發(fā)者看的“表象”不盡相同,但是很多情況下都是由于非法內(nèi)存訪問引起的。

1. 非法指針

非法指針是最典型的非法內(nèi)存訪問案例,空指針、指向非法地址的指針是代碼中最常出現(xiàn)的錯誤。

seo優(yōu)化培訓,網(wǎng)絡(luò)推廣培訓,網(wǎng)絡(luò)營銷培訓,SEM培訓,網(wǎng)絡(luò)優(yōu)化,在線營銷培訓

示例代碼如下:

  long *ptr;
  *ptr = 0; &