linux C編程常見的錯誤總結(必看篇)
定義
所謂的段錯誤就是指訪問的內存超出了系統(tǒng)所給這個程序的內存空間,通常這個值是由gd tr來保存的,他是一個48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相應于gdt的下標,最后3位包括了程序是否在內存中以及程序的在cpu中的運行級別,指向 的gdt是由以64位為一個單位的表,在這張表中就保存著程序運行的代碼段以及數(shù)據(jù)段的起 始地址以及與此相應的段限和頁面交換還有程序運行級別還有內存粒度等等的信息。分段錯誤(通常簡稱為段錯誤)是一個特定的錯誤條件,計算機軟件的操作期間發(fā)生??傊粋€分割故障發(fā)生在一個程序試圖訪問一個內存位置,它是不允許訪問,或試圖以一種不允許一個內存位置的訪問(例如,試圖寫入只讀位置,或覆蓋操作系統(tǒng)的一部分)。一旦一個程序發(fā)生了越界訪問,cpu就會產生相應的保護,于是segmentation fault就出現(xiàn)了通過上面的解釋,段錯誤應該就是訪問了不可訪問的內存,這個內存區(qū)要么是不存在的,要么是受到系統(tǒng)保護的,還有可能是缺少文件或者文件損壞。
————以上來自百度百科
斷錯誤產生的原因:
1 訪問不存在的內存地址
#include <unistd.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int *ptr = NULL;
*ptr = 0;
return EXIT_SUCCESS;
}
2 訪問系統(tǒng)保護的內存地址
#include <unistd.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int *ptr = (int *)0;
*ptr = 100;
return EXIT_SUCCESS;
}
3 訪問只讀的內存地址
#include <unistd.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *ptr = "xiyoulinux";
strcpy(ptr, "test");
return EXIT_SUCCESS;
}
4 棧溢出
#include <unistd.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
main();
}
以上這篇linux C編程常見的錯誤總結(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 詳解基于Linux下正則表達式(基本正則和擴展正則命令使用實例)
- Linux 修改 etc/hosts文件詳細介紹
- Linux中mysqldump命令實例詳解
- 一個簡單的linux命令 tail
- linux系統(tǒng)oracle數(shù)據(jù)庫出現(xiàn)ora12505問題的解決方法
- Linux中拷貝 cp命令中拷貝所有的寫法詳解
- 詳解linux centos yum安裝LAMP環(huán)境
- linux中kvm的安裝及快照管理
- Linux下使用shell腳本自動執(zhí)行腳本文件
- 每天學一個 Linux 命令之more命令
- 詳解linux下redis安裝、啟動與停止,redis做成服務
- Linux搭建python環(huán)境詳解
- Linux下安裝Oracle 11g出現(xiàn)prvf-0002錯誤解決辦法
- Keepass+PuTTYPortable+Winscp一鍵登錄實例詳解
相關文章
詳解linux下fsevents模塊引起的npm ls報錯解決辦法
這篇文章主要介紹了詳解linux下fsevents模塊引起的npm ls報錯解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04
Linux服務器配置ip白名單防止遠程登錄以及端口暴露的問題
今天小編就為大家分享一篇Linux服務器配置ip白名單防止遠程登錄以及端口暴露的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
linux Jenkins配置salve節(jié)點實現(xiàn)過程圖解
這篇文章主要介紹了linux Jenkins配置salve節(jié)點實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
linux時間函數(shù)與時間格式與字符串之間的轉化方法
下面小編就為大家分享一篇linux時間函數(shù)與時間格式與字符串之間的轉化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

