关于静态存储区域、栈、堆
来源:互联网 发布:安卓能看优酷的软件 编辑:程序博客网 时间:2024/05/19 19:30
有关动态对象创建:一般来说,编译器将内存分为三部分:静态存储区域、栈、堆。静态存储区主要保存全局变量和静态变量,栈存储调用函数相关的变量、地址等,堆存储动态生成的变量,在c中是指由malloc,free运算产生释放的存储空间,在c++中就是指new和delete运算符作用的存储区域。
昨天才看PPT看到 囧 少壮不努力老大徒伤悲阿……
10.2.1 静态存储分配
指在编译时对数据对象分配固定的存储位置,运行时始终不变。即一旦存储空间的某个位置分配给了某个数据名,则在目标程序的整个运行过程中,此位置(地址)就属于该数据名。
由静态存储分配产生的数据区称为静态数据区。
静态存储分配适用于不允许递归过程或递归调用,不允许可变体积的数据结构的语言
静态存储分配的特点:简单、易于实现
例:FORTRAN语言,它所有的数据都属于这一类。
10.2.2 动态存储分配
指在运行阶段动态地为源程序中的数据对象分配存储位置
实行动态存储分配的语言的特点:
允许递归过程
允许可变数据结构(可变数组或记录等)
允许用户自由申请和释放空间
这种程序在编译时无法确定运行时所需数据空间的大小,需待程序运行时动态确定
有两种动态存储分配方式:栈式(stack)、堆式(heap)。
10.2.3 栈式动态存储分配
在数据空间中开辟一个栈区,每当调用一个过程时,它所需要的数据空间就分配在栈顶,每当过程工作结束时就释放这部分空间。空间的使用符合先借后还的原则。
特点:先借后还,管理简单,空间使用效率高
栈式动态存储分配适合于PASCAL、C等典型过程式语言。
10.2.4 堆式动态存储分配
在数据空间中开辟一片连续的存储区(通常叫做堆),每当需要时就从这片空间借用一块,不用时再退还。借用与归还未必服从“先借后还”的原则。
堆式动态存储分配适合于用户可以自由申请和归还数据空间的语言,如C++。
特点:适用范围广,容易出现碎片。
如何充分利用空间是个难题。
- 关于静态存储区域,堆,栈
- 关于静态存储区域、栈、堆
- 关于静态存储区域,堆,栈
- 关于存储区域位置,堆与栈
- 字符串的存储方式以及静态存储区域、栈、堆
- 字符串的存储方式以及静态存储区域、栈、堆
- 字符串的存储方式以及静态存储区域、栈、堆
- 字符串的存储方式以及静态存储区域、栈、堆
- 字符串的存储方式以及静态存储区域、栈、堆
- 字符串的存储方式以及静态存储区域、栈、堆
- 关于堆、栈、静态存储区的一些总结
- 静态存储区、堆、栈
- 栈 , 堆 , 静态存储区
- 栈,堆,静态存储区
- 程序中变量分布的区域总结 堆 栈 字符常量区 全局数据区 静态存储区
- 关于C/C++的内存区划分:堆、栈、自由存储区、全局/静态存储区和常量存储区
- 堆 栈 静态存储 常量空间
- 静态存储区、代码区、堆、栈
- 8月第三周总结 第四周计划
- 自己动手编写嵌入式Bootloader之(1)
- 自己动手编写嵌入式Bootloader之(2)
- 自己动手编写嵌入式Bootloader之(3)
- 为了赚积分 = =+
- 关于静态存储区域、栈、堆
- 试一试Virtual……
- 模式对话框。。
- C++里的静态成员函数为何不能用const?
- 类模板练习
- VS2005下各基本类型的size
- C++对象布局及多态实现的探索
- C++的继承与多态demo
- C++中的this指针