内存分配策略

来源:互联网 发布:淘宝店铺怎么改名 编辑:程序博客网 时间:2024/05/22 07:43

按照编译原理的观点,程序运行时的内存分配策略有三种,分别是静态的,堆式的,栈式的。

1、静态内存分配

  • 静态内存分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就给他们分配固定的内存空间。

  • 这种分配策略要求程序代码中不允许有可变的数据结构的存在额,如可变数组,也部允许有嵌套或者递归的结构出现,因为他们都导致编译程序无法准确计算其内存空间需求。

2、栈式内存分配

  • 栈式内存分配也可称为动态内存分配,是由一种类似于堆栈的运行栈来实现的。

  • 与静态内存分配相反,在栈式内存分配的方案中,程序对数据区的需求在编译时是完全未知的,只有在运行的时候才能够知,但是规定进入一个程序模块时,必须知道该程序模块所需数据区的大小才能为其分配内存。

  • 栈式内存分配按照先进后出的原则进行分配。

3、堆式内存分配

  • 静态内存分配要求在编译时能知道所有变量的存储要求,栈式内存分配要求在过程的入口处必须知道所有的存储要求,而堆式内存分配则专门负责在编译时或运行时模块入口处无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例。

  • 堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放。

0 0
原创粉丝点击