算法竞赛入门经典
P79
段是指二进制文件内的区域,所有某种特定类型信息被保存在里面,可以用size程序得到可执行文件中各个段的大小,
a.exe由正文段,数据段和bss段组成
在可执行文件中正文段用于储存指令,数据段用于储存已初始化的全局变量,BSS段用于储存未赋值的全局变量所需的空间
调用栈并不储存在可执行文件中,而是在运行时创建。调用栈所在段称为堆栈段。和其他段一样,堆栈段也有自己的大小。前面的错误 阶乘f(10000) 就不难理解了
每次递归调用都需要往调用栈里增加一个栈帧,久而久之就越界了。
建议把较大的数组放在main函数外,因为局部变量也是放在堆栈段的。栈溢出不一定是递归调用太多,也可能是局部变量太大,只要总大小超过允许的范围就会产生栈溢出