C语言入门教程-计算机中的栈和堆
[09-12 13:08:18] 来源:http://www.88dzw.com 电路基础 阅读:8237次
文章摘要:计算机中的栈和堆今天的个人电脑或工作站一般配备有16至64兆字节的RAM。系统通过使用虚拟内存技术将内存块和硬盘空间不断交换,从而为CPU制造假象使它认为有多得多的内存,如200至500兆字节。虽然CPU对此浑然不知,但是用户有时会察觉到处理速度的大幅下降。然而暇不掩瑜,虚拟内存是一项极有用的以廉价方式“扩充”计算机内存的技术。在本节的讨论中,我们不妨假设某个典型计算机的内存空间总大小是50兆字节(不论是使用真正的RAM还是虚拟内存)。 计算机的操作系统负责管理这50兆字节的内存空间。操作系统使用内存的方式有多种,如下所示: <-- -->操作系统和所有应用程序(包括它们的全局变
C语言入门教程-计算机中的栈和堆,标签:电子电路基础,模拟电路基础,http://www.88dzw.com计算机中的栈和堆
今天的个人电脑或工作站一般配备有16至64兆字节的RAM。系统通过使用虚拟内存技术将内存块和硬盘空间不断交换,从而为CPU制造假象使它认为有多得多的内存,如200至500兆字节。虽然CPU对此浑然不知,但是用户有时会察觉到处理速度的大幅下降。然而暇不掩瑜,虚拟内存是一项极有用的以廉价方式“扩充”计算机内存的技术。在本节的讨论中,我们不妨假设某个典型计算机的内存空间总大小是50兆字节(不论是使用真正的RAM还是虚拟内存)。
计算机的操作系统负责管理这50兆字节的内存空间。操作系统使用内存的方式有多种,如下所示:
<-- -->操作系统和所有应用程序(包括它们的全局变量和栈空间)都需要占用部分内存。一个程序完成后会释放内存供其他程序使用。注意,任意时刻都有部分内存空间空闲。 |
当然图示的只是一种理想化的情况,但其基本原理是适用的。如您所见,内存存储了各种当前正在运行的应用程序的执行代码,也存储了操作系统自身的执行代码。每个应用程序都带有一些全局变量,它们也占用内存。最后,每个应用程序都要使用一块称为栈的内存区域。栈用于保存所有的局部变量和函数参数。栈还记录了函数调用的先后顺序,因此也可以保证函数按正确的顺序返回。当一个函数被调用的时候,其局部变量和参数被“压入”栈顶;函数返回时,这些局部变量和参数又被“弹出”。因此,在程序运行的时候,它的栈的大小一直是变化不定的,但是有一个上限。
程序完成时,操作系统会将它的代码、全局变量和栈空间从内存中卸载。以后的新程序就可以重用这些内存空间。这样,计算机系统中的内存就会因程序的执行和完成而不断被“回收”和重新使用。
一般说来,在任一时刻计算机大约有50%的内存空间是空闲的。空闲的内存由操作系统支配和管理,统称为堆。堆极其重要。通过在执行时调用C函数malloc(memory allocate,内存分配)和free,程序就可以使用堆了。这样,程序执行中的内存需求就可以准确地从堆上分配,而不必使用确定大小的数组声明预先分配好。
- 上一篇:C语言入门教程-函数原型
《C语言入门教程-计算机中的栈和堆》相关文章
- › C语言入门教程-二进制文件
- › C语言入门教程-打开文本文件
- › C语言入门教程-读取文本文件
- › C语言入门教程-指针
- › C语言入门教程-为什么要用指针?
- › C语言入门教程-指针基础
- 在百度中搜索相关文章:C语言入门教程-计算机中的栈和堆
- 在谷歌中搜索相关文章:C语言入门教程-计算机中的栈和堆
- 在soso中搜索相关文章:C语言入门教程-计算机中的栈和堆
- 在搜狗中搜索相关文章:C语言入门教程-计算机中的栈和堆
编辑推荐
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法