关于段错误和栈溢出的问题

段的概念其实在微机原理已经碰到过,代表可执行文件中各个类型信息保存的地方。其中正文段:text用于存储指令,数据段:data用于存储已初始化的全局变量,bss段用于存储未赋值的全局变量所需的空间。

其实还有一个段常听过,叫堆栈段stack。和其他段一样有自己的大小,一旦越界会爆段错误。堆栈段实在运行时,程序动态创建的一个堆栈段,放着调用栈,保存着函数调用关系和局部变量。

关于调用栈,描述函数之间的调用关系,由多个栈帧组成,每个栈帧代表其对应的运行的函数。在运行递归函数时,使用(gdb) bt调试,可以看到由#号标示的栈帧。

这么说的话,当递归次数过大也是不行的,如果每次递归都加栈帧,那很快就栈溢出了。

还有,局部变量也是放在堆栈段,因此局部变量太大太多也是不行的,所以说要把较大的数组放在main函数外,变成全局。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值