Window s 内存管理 内存管理对于编写出高效率的Window s 程序是非常重要的,这是因为Window s 是多任务系统,它的内存管理和单任务的DOS 相比有很大的差异
DOS 是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但 Window s却不然,它在同一时刻可能有多个应用程序共享内存,有时为了使某个任务更好地执行,Window s 系统可能会对其它任务分配的内存进行移动,甚至删除
因此,我们在 Window s应用程序中使用内存时,要遵循 Window s 内存管理的一些约定,以尽量提高Window s 内存的利用率
Window s 内存对象 Window s 应用程序可以申请分配属于自己的内存块,内存块是应用程序操作内存的单位,它也称作内存对象,在 Window s 中通过内存句柄来操作内存对象
内存对象根据分配的范围可分为全局内存对象和局部内存对象;根据性质可分为固定内存对象,可移动内存对象和可删除内存对象
固定内存对象,特别是局部固定内存对象和DOS 的内存块很类似,它一旦分配,就不会被移动或删除,除非应用程序主动释放它
并且对于局部固定内存对象来说,它的内存句柄本身就是内存对象的16 位近地址,可供应用程序直接存取,而不必象其它类型的内存对象那样要通过锁定在内存某固定地址后才能使用
可移动内存对象没有固定的地址,Window s 系统可以随时把它们移到一个新地址
内存对象的可移动使得 Window s 能有效地利用自由内存
例如,如果一个可移动的内存对象分开了两个自由内存对象,Window s 可以把可移动内存对象移走,将两个自由内存对象合并为一个大的自由内存对象,实现内存的合并与碎片回收
可删除内存对象与可移动内存对象很相似,它可以被 Window s移动,并且当 Window s需要大的内存空间满足