请问gcc中编通过,执行时“段错误”是怎么一回事?

reason1 2003-09-09 08:28:27
段错误是什么错误?
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangchaobj 2003-09-11
  • 打赏
  • 举报
回复
向pigjj(pigjj) 致敬。
又学到知识了。
要是GCC会自动报警该有多好啊,我那一个下午就省下了。
pigjj 2003-09-11
  • 打赏
  • 举报
回复
------------------------------------------------------------------
GCC本身就有bug,不过一般的情况下是编程人员的错:
由于在栈上声名了太多的变量,导致运行时栈混乱,典型的现象就是一遇到函数就会
segmentation fault。我曾经一次在栈上声明了32Mb,结果请了一位高手给我调了一下午,才发现这毛病。


------------------这不是gcc的bug是由于你的堆栈大小超过系统限制。
man limit

在C-SHELL 中你可以调整堆栈的大小限制
limit stacksize ?????
在bash中应该也可以
blh 2003-09-11
  • 打赏
  • 举报
回复
gdb demo
后执行r命令
blh 2003-09-11
  • 打赏
  • 举报
回复
gcc -g -o demo yours.c

gdb demo
你就看到错误的地方了
softwarrior 2003-09-11
  • 打赏
  • 举报
回复
用gdb跟一下吧,马上就能找出来,就象2位楼上说的,多是内存错误
xinzhou-nk 2003-09-09
  • 打赏
  • 举报
回复
自己使用debug,如果程序不大的话应该很快就能找到出现“segmentation fault"的地方,一般都是指针出错。
yangchaobj 2003-09-09
  • 打赏
  • 举报
回复
GCC本身就有bug,不过一般的情况下是编程人员的错。
1、对NULL指针的写操作。如:pAnything = NULL;pAnything->m_Data = 123;
2、由于在栈上声名了太多的变量,导致运行时栈混乱,典型的现象就是一遇到函数就会
segmentation fault。我曾经一次在栈上声明了32Mb,结果请了一位高手给我调了一下午,才发现这毛病。
3、所写入的地址非法。比如向不存在的内存地址写数据(野指针)。

暂时先想起这么多,你自己调调看。

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧