程序运行时三种内存分配策略
2016-10-03 15:31
253 查看
程序运行时三种内存分配策略
按照编译原理的观点,程序运行时的内存分配有三种策略:分别是静态的,栈式的,和堆式的.
静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求.
栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个程序模块时,必须知道该程序模块所需的数据区大小才能够为其分配内存.和我们在数据结构所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。
静态存储分配要求在编译时能知道所有变量的存储要求,栈式存储分配要求在过程的入口处必须知道所有的存储要求。。。。
而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例.堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放。
相关文章推荐
- 程序运行时三种内存分配策略
- 程序运行时三种内存分配策略:静态的、栈式的、和堆式的,以及区别
- 程序运行时三种内存分配策略
- 程序运行时三种内存分配策略
- 程序运行时三种内存分配策略
- 一个测试ACE各种内存分配策略效率的程序
- JAVA程序运行时 对象的放置安排及内存的分配
- 程序及其运行时内存分配解析
- 一个测试ACE各种内存分配策略效率的程序
- 程序编译后运行时的内存分配
- C/C++程序编译时和运行时内存区域分配
- java程序运行时内存分配详解 (转)
- c++程序运行时的内存分配【比较好理解】
- 程序运行时的内存分配--静态的,栈式的,和堆式的
- 程序运行时,对象是怎么进行放置的呢?特别是内存是怎么分配的呢?
- [转]C程序运行、退出过程及内存分配
- Java程序运行内存分配分析
- 编写程序研究标准库为vector对象提供内存分配策略
- java程序运行时的内存分配
- 一个C程序运行时的内存分配情况