GCC下调试C语言程序为什么显示“段错误”?

 我来答
ZaolyloaZ
2017-06-09 · TA获得超过1776个赞
知道小有建树答主
回答量:567
采纳率:80%
帮助的人:95.7万
展开全部

在 C 程序中,经常会遇到段错误(Segment error),这种问题出现的原因可能如下:

  1. 对一个 NULL 指针解引用;

  2. 访问程序进程以外的内存空间。

实际上,第一个原因可以归到第二个原因。在一个 C 程序的虚拟内存空间中,从低地址到高地址依次是代码区,堆区(向上增长),栈区(向下增长),最上是常量区。其中 NULL 指针的位置正好是虚拟内存中地址为 0 的位置,而这个位置是不属于以上 4 个区域的,同理一些比较低的地址也不属于这四个区,所以造成段错误的原因是访问了程序虚拟内存空间 4 个区以外的地址。在平时的开发中,最大的可能还是对 NULL 进行了解引用。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式