上一页 下一个

C编程的基础知识

动态数据结构:堆

操作系统和多个应用程序,以及它们的全局变量和堆栈空间,所有消费的部分记忆。当程序完成执行时,它会释放出它的内存供其他程序重用。请注意,内存空间的一部分仍未使用在任何给定的时间。”width=
操作系统和多个应用程序,以及它们的全局变量和堆栈空间,所有消费的部分记忆。当程序完成执行时,它会释放出它的内存供其他程序重用。请注意,内存空间的一部分仍未使用在任何给定的时间。

一个典型的个人电脑今天或工作站安装介于16 - 64 mb的RAM。使用了一种叫做虚拟内存,系统可以交换块内存和关闭机器的硬盘上创建一个错觉的CPU,更多的内存,例如200 - 500字节。虽然这种错觉是完整的CPU是而言,这样做有时会慢一些非常从用户的角度。尽管这个缺点,虚拟内存是一种非常有用的技术,“增加”的RAM的机器的一种并不昂贵的方式。假设为了这个讨论,一个典型的计算机有总内存空间,例如,50 mb(无论内存中实现真正的内存或虚拟内存)。

操作系统的机器负责50-megabyte内存空间。操作系统在几种不同的方式使用空间,如下所示。18新利最新登入

广告

当然,这是一个理想化,但基本原则是正确的。正如你所看到的,记忆是不同的应用程序当前运行的可执行代码的机器上,随着操作系统的可执行代码本身。与之关联的每个应用程序有一定的全局变量。这些变量也消耗内存。最后,每个应用程序使用的内存堆栈持有任何函数所使用的所有局部变量和参数。堆栈还记得函数的顺序被称为函数返回正确的发生。每次调用一个函数,它的局部变量和参数”推到“堆栈。当函数返回时,这些当地人和参数“突然”。Because of this, the size of a program's stack fluctuates constantly as the program is running, but it has some maximum size.

程序结束执行,操作系统卸载它,它的全局变量和从内存堆栈空间。一个新程序可以利用空间在稍后的时间。通过这种方式,在计算机系统内存不断“回收”和重用程序执行和完成。

一般来说,也许电脑50%的总内存空间可能未使用在任何给定的时刻。操作系统拥有和管理未使用的内存,统称为。堆是极其重要的,因为它是使用在应用程序执行期间使用的C函数malloc(内存分配)免费的。堆允许程序分配内存完全在他们需要的时候,在程序执行的,而不是用specifically-sized预分配数组声明。

特色
Baidu