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

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

  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)的錯(cuò)誤。

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

示例代碼如下:

  long *ptr;
  *ptr = 0; &
        
		

網(wǎng)友評(píng)論