posts - 48,comments - 29,trackbacks - 0

第六章 运行时的存储空间

  • 运行时存储空间的结构和分配
  • 过程活动记录AR
  • 运行时变量的访问

运行时的存储空间结构

  • 要保存的信息:
    目标代码;数据;库函数代码;
    过程活动的控制信息等
  • 运行时的存储空间结构:

运行时静态区的分配

  • 存储对象的存储位置在程序的整个生命周期是固定的
  • 分配对象:
    全程变量 常量 信息表
  • 分配方法:
    块地址法:(DataArea,Offset)
    变址模式:(Register,Offset)

栈区的存储分配

  • 存在递归调用
  • 存储对象:
    过程中被声明的形参、局部变量 临时变量
  • 分配方法:
    对每个被调用过程分配一段存储空间,sp存放当前过程空间的开始地址;对变量X:(Level,off),则其存放地址为off[sp]。过程结束时自动释放空间;
  • 不能存储:
    值的生命周期长于过程的变量;
    动态申请空间的变量;

堆区的存储分配

  • 可随时分配和释放空间
  • 存储对象:
    动态申请空间的变量的值
  • 释放空间方法:
    显示释放:
    隐式释放:单指针释放;计数释放法;标记释放法
  • 分配空间方法:
    最佳符合法;首次优先法;循环首次优先法
posted on 2007-08-26 14:12 风筝 阅读(868) 评论(1)  编辑 收藏 引用 所属分类: 技术点滴

FeedBack:
# re: 运行时栈空间的使用
2007-08-26 14:20 | 风筝
我查阅了一些书籍,上面描述的运行时栈空间分配是从低地址开始,向高地址增长,即栈底在低地址,不过有些描述是相反的。比如先申请一定的栈空间,然后从高地址开始入栈的方式。待考  回复  更多评论
  
只有注册用户登录后才能发表评论。