※ 引述《NTHUCS5566 (清大資工56)》之銘言:
: 各位鄉民早安
: 剛剛compile完執行跑出segmentation fault
: 推測是上游同學寫炸了導致我存取容器失敗致使發生錯誤
: 可是大家都在睡了 本肥很餓
: 有沒有要吃什麼當早餐的八卦啊?
一個夠格的函式庫 不論怎樣亂輸入 都該不會出現內存錯誤才是
會產生內存分段區故障 唯一可能就是內存越界
而導至越界的根本理由很多
常見是 a[len] = XXX;
其中len為很大的數字 好比-8 (= 2G - 8) 這類
會導至len 為負 原因可能是兩個指針相減 而被減數為0
如 strstr() - pXX,而strstr找不到目標字串 回傳0
試看看往這方向找
切回原題 原發文者 該要做嚴格的輸入數簡查
理論上亂丟引數進去 該會被擋 並回傳錯誤給調用者才是
好比 丟進來的len是
負, 指針為空, 長度不足 指針內容未清空 這類的
不是由操作系統來擋
若由操作系統擋 就是顯示"內存分段區故障"
然後砍掉這應用程式 沒有別得可能
若是驅動層(作業系統延申部) 那更慘 沒得擋
死機算最輕微了 慘是能用 但偶會出現怪事還不是永遠出現
一個能用的函式庫 檢查引數值 是非常基本的