linux C程式設計常見的錯誤總結 必看篇

2022-09-26 16:00:37 字數 1073 閱讀 6954

定義

所謂的段錯誤就是指訪問的記憶體超出了系統所給這個程式的記憶體空間,通常這個值是由gd tr來儲存的,他是乙個48位的暫存器,其中的32位是儲存由它指向的 gdt表,後13位儲存 相應於gdt的下標,最後3位包括了程式是否在記憶體中以及程式的在cpu中的執行級別,指向 的gdt是由以64位為乙個單位的表,在這張表中就儲存著程式執行的**段以及資料段的起 始位址以及與此相應的段限和頁面交換還有程式執行級別還有記憶體粒度等等的資訊。分段錯誤(通常簡稱為段錯誤)是乙個特定的錯誤條件,計算機軟體的操作期間發生。總之,乙個分割故障發生在乙個程式試圖訪問乙個記憶體位置,它是不允許訪問,或試圖以一種不允許乙個記憶體位置的訪問(例如,試圖寫入唯讀位置,或覆蓋作業系統的一部分)。一旦乙個程式發生了越界訪問,cpu就會產生相應的保護,於是segmenta程式設計客棧tion fault就出現了通過上面的解釋,段錯誤應該就是訪問了不可訪問的記憶體,這個記憶體區要麼是不存在的,要麼是受到系統保護的,還有可能是缺少檔案或者檔案損壞。

————以上來自百度百科

斷錯誤產生的原因:

1 訪問不存在的記憶體位址

#include

#include

#include

#include

int main(int argc, char *ar**)

2 訪問系統保護的記憶體位址

#include

#include

#include

#include

int main(int argc, char *ar**)

3 訪問唯讀的記憶體位址

#include

#include

#include

#include

#include

int main(int argc, char *ar**)

4 棧溢位

#include

#include

#include &lwww.cppcns.comt;stdio.h>

#include

int main()

本文標題: linux c程式設計常見的錯誤總結(必看篇)

本文位址:

程式設計常見錯誤總結

1 program terminated with signal 6,aborted.棧溢位問題報錯 no symbol table is loaded.use the file command.aborted core dumped gdb where 00x0000003aaa232925 in...

程式設計常見錯誤

1.在寫類的成員函式的時候,忘記在成員函式前寫類名字,導致類中的資料成員不可見,報錯 qvector3d calfacenormal const int f0,const int f1,const int f2,qvector3d facenormal 上面這麼寫會導致normals不可見,報錯為 ...

Linux C程式設計 execve總結

execve函式作用是執行乙個新的程式,程式可以是二進位制的可執行程式,也可以是shell pathon指令碼 函式原型 int execve const char filename,char const argv char const envp 引數介紹 filename 程式所在的路徑 argv...