整体堆和局部堆
Windows由三部分组成:
- 核心是负责Windows程序多任务的程序
- 用户是负责管理窗口,按钮,控制和菜单的程序
- GDI是负责在你的屏幕或打印机上画图的程序
己经被核心分配的所有线性内存叫做整体堆。堆只是意味着线性内存的一个堆,即一个大房间。简单地说,整体堆是被Windows核心管理着的线性内存区域。应用程序为了自身的使用而叫核心分配部分线性内存。
当Windows3.1x或Windows95/98中的16位应用程序启动时,它们都自动地被分配整体堆的64K段。这些段之所以是64K,是因为这就是一个16位应用程序能常规访问的最大量内存。小于64K的段 和其他Windows应用程序分配的相似于64K的内存段,叫做局部堆。
概括起来,就Windows应用程序而言,整体堆是所有线性内存。局部堆是整体堆的小于64K的段,它们分配给各个Windows应用程序使用。
资源
资源只是你能使用的对象。为了管理出现在你屏幕上的各种对象,用户和GDI程序维持关于那些对象的各种信息。例如,对于在你屏幕上的每个按钮,Windows用户程序必须知道:
- 按钮应该定位在屏幕上的什么地方
- 什么应用程序拥有这个按钮
- 当你点击这个按钮时应用程序的哪个部分必须被通知
关于用户和GDI程序管理的各种对象的信息被保存在六个称为资源堆的64K段里。这些区域实际上是64K局部堆。这些区域之所以是64K,是因为这是16位应用程序能有效处理的最大数量。用户和GDI是16位程序, 因为Windows原本被设计来运行在Intel8088和80286,16位处理器上的。
用户资源堆
用户资源堆分为:
- 包含关于窗口和控制信息的窗口堆
- 包含关于下拉菜单信息的菜单堆
- 包含出现在菜单中的文本信息的菜单字符串堆
- 包含大多数窗口题目的用户原子堆