zoukankan      html  css  js  c++  java
  • 段的概念 栈溢出

    算法竞赛入门经典

    P79

    段是指二进制文件内的区域,所有某种特定类型信息被保存在里面,可以用size程序得到可执行文件中各个段的大小,

    a.exe由正文段,数据段和bss段组成

    在可执行文件中正文段用于储存指令,数据段用于储存已初始化的全局变量,BSS段用于储存未赋值的全局变量所需的空间

    调用栈并不储存在可执行文件中,而是在运行时创建。调用栈所在段称为堆栈段。和其他段一样,堆栈段也有自己的大小。前面的错误 阶乘f(10000) 就不难理解了

    每次递归调用都需要往调用栈里增加一个栈帧,久而久之就越界了。

    建议把较大的数组放在main函数外,因为局部变量也是放在堆栈段的。栈溢出不一定是递归调用太多,也可能是局部变量太大,只要总大小超过允许的范围就会产生栈溢出

  • 相关阅读:
    Roadblocks(poj 3255)
    最小集合(51nod 1616)
    绿色通道(codevs 3342)
    解的个数(codevs 1213)
    多米诺(codevs 3052)
    abcd
    dwarf tower
    第K 小数
    noip2016复习
    文化之旅(洛谷 1078)
  • 原文地址:https://www.cnblogs.com/is-Tina/p/7344840.html
Copyright © 2011-2022 走看看