国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

linux C編程常見的錯(cuò)誤總結(jié)(必看篇)

2019-11-02 16:47:41
字體:
供稿:網(wǎng)友

定義

所謂的段錯(cuò)誤就是指訪問的內(nèi)存超出了系統(tǒng)所給這個(gè)程序的內(nèi)存空間,通常這個(gè)值是由gd tr來保存的,他是一個(gè)48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相應(yīng)于gdt的下標(biāo),最后3位包括了程序是否在內(nèi)存中以及程序的在cpu中的運(yùn)行級(jí)別,指向 的gdt是由以64位為一個(gè)單位的表,在這張表中就保存著程序運(yùn)行的代碼段以及數(shù)據(jù)段的起 始地址以及與此相應(yīng)的段限和頁面交換還有程序運(yùn)行級(jí)別還有內(nèi)存粒度等等的信息。分段錯(cuò)誤(通常簡(jiǎn)稱為段錯(cuò)誤)是一個(gè)特定的錯(cuò)誤條件,計(jì)算機(jī)軟件的操作期間發(fā)生。總之,一個(gè)分割故障發(fā)生在一個(gè)程序試圖訪問一個(gè)內(nèi)存位置,它是不允許訪問,或試圖以一種不允許一個(gè)內(nèi)存位置的訪問(例如,試圖寫入只讀位置,或覆蓋操作系統(tǒng)的一部分)。一旦一個(gè)程序發(fā)生了越界訪問,cpu就會(huì)產(chǎn)生相應(yīng)的保護(hù),于是segmentation fault就出現(xiàn)了通過上面的解釋,段錯(cuò)誤應(yīng)該就是訪問了不可訪問的內(nèi)存,這個(gè)內(nèi)存區(qū)要么是不存在的,要么是受到系統(tǒng)保護(hù)的,還有可能是缺少文件或者文件損壞。

――――以上來自百度百科

斷錯(cuò)誤產(chǎn)生的原因:

1 訪問不存在的內(nèi)存地址

#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)保護(hù)的內(nèi)存地址

#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 訪問只讀的內(nèi)存地址

#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編程常見的錯(cuò)誤總結(jié)(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 延边| 桐乡市| 西充县| 淮滨县| 宝兴县| 崇仁县| 绩溪县| 晋城| 开原市| 双桥区| 通许县| 香港 | 富锦市| 庐江县| 乐都县| 珠海市| 镇原县| 龙口市| 秦皇岛市| 永修县| 灯塔市| 杭锦旗| 岑巩县| 墨竹工卡县| 奇台县| 鹤壁市| 酉阳| 大邑县| 胶州市| 苏尼特左旗| 安远县| 车致| 江城| 中西区| 耿马| 墨江| 扶绥县| 山东| 寿宁县| 天津市| 潮安县|