段错误
一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出
指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况
单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本
如果是linux,可以产生core文件,从core文件查看出错的地方
======================================
编译的时候加调试信息(-g),然后objdump -D xxx > debug
xxx就是-g编出来的可执行文件,debug是生成的堆栈表,里面会有函数调用关系,甚至每条语句的虚拟内存位置。在这个文件里查找段错误的堆栈地址。或者附近地址,你会有收获。
======================================
文章评论(0条评论)
登录后参与讨论