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

来源:互联网 发布:js包装函数 编辑:程序博客网 时间:2024/05/29 04:21

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

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

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

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

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

0 0
原创粉丝点击