※ 引述《NTHUCS5566 (清大资工56)》之铭言:
: 各位乡民早安
: 刚刚compile完执行跑出segmentation fault
: 推测是上游同学写炸了导致我存取容器失败致使发生错误
: 可是大家都在睡了 本肥很饿
: 有没有要吃什么当早餐的八卦啊?
一个够格的函式库 不论怎样乱输入 都该不会出现内存错误才是
会产生内存分段区故障 唯一可能就是内存越界
而导至越界的根本理由很多
常见是 a[len] = XXX;
其中len为很大的数字 好比-8 (= 2G - 8) 这类
会导至len 为负 原因可能是两个指针相减 而被减数为0
如 strstr() - pXX,而strstr找不到目标字串 回传0
试看看往这方向找
切回原题 原发文者 该要做严格的输入数简查
理论上乱丢引数进去 该会被挡 并回传错误给调用者才是
好比 丢进来的len是
负, 指针为空, 长度不足 指针内容未清空 这类的
不是由操作系统来挡
若由操作系统挡 就是显示"内存分段区故障"
然后砍掉这应用程式 没有别得可能
若是驱动层(作业系统延申部) 那更惨 没得挡
死机算最轻微了 惨是能用 但偶会出现怪事还不是永远出现
一个能用的函式库 检查引数值 是非常基本的