Segmentation fault错误如何跟踪?
C程序运的时候老会出现Segmentationfault的错误,我知道可能是由于对指针的操作引起的,可是具体有哪些原因呢?如何跟踪Segmentationfault错误呢...
C程序运的时候老会出现Segmentation fault的错误,我知道可能是由于对指针的操作引起的,可是具体有哪些原因呢?
如何跟踪Segmentation fault错误呢?因为这种错误也不会指出行号什么的! 展开
如何跟踪Segmentation fault错误呢?因为这种错误也不会指出行号什么的! 展开
展开全部
段错误
一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出
指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况
单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本
如果是linux,可以产生core文件,从core文件查看出错的地方
一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出
指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况
单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本
如果是linux,可以产生core文件,从core文件查看出错的地方
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询