99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

徐土豆
認證:優質創作者
所在專題目錄 查看專題
C語言中去除不必要的內存引用可以有效地提高性能
C語言中內循環和外循環的位置可能產生性能上的區別
[C語言朝花夕拾] C語言中的命令行輸入參數判斷
用“位操作”取代“取模操作”判斷奇數偶數
c語言運行時出現segment fault的原因
一文理解C語言中的volatile修飾符
作者動態 更多
給定計算預算下的最佳LLM模型尺寸與預訓練數據量分配
05-19 09:33
大模型推理時的尺度擴展定律
05-18 10:32
世界多胞體與世界模型
05-13 09:42
獎勵模型中的尺度擴展定律和獎勵劫持
05-12 08:41
MeCo——給預訓練數據增加源信息,就能減少33%的訓練量并且提升效果
05-08 09:13

c語言運行時出現segment fault的原因

本文轉自徐飛翔的“c語言運行時出現segment fault的原因
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

segment fault段錯誤是在編程報錯中經常出現的,特別是在c語言編程中,尤其常見,其原因本質上上是訪問了非法(不屬于這個程序)的內存地址空間,具體來說有以下幾種情況:

  1. 局部變量定義中,使用了過大的局部變量,大于了系統給之的棧(stack)的大小,因此報錯。比如以下代碼在linux環境下,就可能出現段錯誤報錯:
    void foo(){
    	float vars[10000][10000];
    }?

    代碼很簡單,就是在棧上劃出了一個很大的連續內存空間,翻譯成匯編如:

    mov $100000016, %rsp
    # 還有多出的16個字節是上下文切換需要的內存,frame pointer %rbp, return address等,
    # 同時如果用gcc等編譯的,還要考慮其內存對齊的要求,即是其是16字節的倍數。?

    這個棧大小可能超出了系統給定每個程序的棧的大小,可以通過shell命令ulimit -s進行查看系統給定的棧大小,比如筆者的就是:

    user@ubuntu: ulimit -s 
    8192?

    注意這里都是以1024字節(1KB)為單位的,因此默認的就是8MB的棧大小,如果你的程序需要更大的棧空間,那么可以通過

    ulimit -s 1000000?

    類似這樣的命令去重定義最大的棧大小。

  2. stack overflow棧溢出 C語言是沒有對數組的邊界檢測的,這樣在實際應用中常常會導致越界的問題,我們知道,程序的棧如下圖所示:

    考察以下代碼:

    void foo(){
    	int vars[100];
    	vars[100] = 0;
    	vars[101] = 0;
    	vars[102] = 0;
    	vars[103] = 0;
    }?

    當然,我們知道,我們對該數組vars只能檢索到vars[99],因為其索引范圍是[0,99],但是這種超出了理論上的索引邊界(越界)的“低級錯誤”確是在實際代碼中經常出現的bug的根源之一。從上圖的程序棧我們可以看出,如果棧中的變量邊界溢出,那么可能會對一些上下文信息,比如return address進行期望之外的修改,導致難以預料的錯誤(比如無法返回到調用函數,或者返回到不該返回的地址,這里容易被黑客進行棧溢出攻擊),因此操作系統一般會檢測這種段錯誤,同時報錯segment fault。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 3
關注 52
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 国产成人精品久久二区二区 | 日本少妇人妻XXXXⅩ18 | 扒开双腿猛进入在线观看 | 成人av亚洲 | 国产二区久久 | www.免费黄色 | av久久伊人精品中文字幕 | 国产精品美女久久久久久不卡 | 成年站免费网站看V片在线 成人亚洲免费视频 | 亚洲精品久久久久69影院 | 免费人成视频网站在线18 | 亚洲精品AⅤ在线国自产拍 美国人泡妞xxxxwww免费看 | 老少交欧美另类 | 天天操天天干天天爽 | 特黄色一级片 | 欧美福利片在线观看 | 性生大片免费观看网站蜜芽 | 国产一区二区野外 | 丰满人妻跪趴高撅肥臀 | 日本高清无吗 | 免费无码AV一区二区 | 中文字幕第15页 | 亚洲精品三级在线观看 | 五十路熟女一区二区三区 | 最新一区二区三区 | 永久黄软件免费观看 | 国产字幕av | 黄动漫在线免费观看 | 国产欧美精品在线观看 | 动漫精品视频一区二区三区 | 国产欧美一区二区在线观看 | 久久国产亚洲日韩 | 国产91精品一区二区三区四区 | 动漫精品视频一区二区三区 | 手机在线中文字幕 | 国产精品成人无码久久久久久 | 五月丁香六月婷婷深爱综合 | 日韩成人精品一区二区三区 | 一级做a爰片性色毛片是免费 | 日韩一级免费在线观看 | 日本真人添下面视频免费 |