Windows|说说LocalAlloc和GlobalAlloc的区别( 二 )


即使是在Win32中 , 你也必须小心谨慎的区分好本地堆和全局堆 。 从其中一个堆中分配的内存 , 不能被另一个堆释放函数所释放 。 这两个函数在功能上的区别已经基本没有了 , 语法上也接近一致 。 由于迁移到了Win32的平坦内存模型中 , 之前的近指针和远指针也不再使用到了 。 但是本地堆和全局堆两个的函数接口还是要看做是两套不同的内存访问接口 。
在接下来的几天中 , 我会花一些时间来讲讲16位系统的内存管理器方面的东西 。 虽然已经是1202年了 , 这些老古董知识已经没有必要了解了 , 但是通过了解它背后的历史背景和设计原理 , 有助于你理解Win32的内存管理器 , 特别是对于剪贴板的规则就来自于16位系统的内存管理器 。
总结操作系统经历了漫长的时代变迁 , 但有些基本原理却始终保持原样 。 这些基本原理 , 就是我们需要花大力气搞明白的地方 。
黑客帝国中的那句话怎么说来着:
“世界上有些事情永远不会改变 , 但是有些却变了 。 ”
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《What was the difference between LocalAlloc and GlobalAlloc?》
【Windows|说说LocalAlloc和GlobalAlloc的区别】