Global 和 Local 函数

         GloBal 和 Local 函数是为了支持从 16-bit 移植过来的代码,或者为了兼容16-bit windows 的源码。从32-bit windows开始,Global 和 Local 函数是使用进程默认堆,封装heap 函数实现的。因此,Global 和 Local 函数比其它的内存管理方式有更大的开销。

         heap 函数比Global 和 Local 函数提供了更多的特性和控制,如果没有特别需要Global 和 Local 函数(特定的应用场景),新开发的应用程序应该使用Heap 函数。例如,一些Windows 函数申请的内存必须使用LocalFree 释放,Global 函数依然在DDE、剪贴板、OLE 数据对象中使用。此连接中包含内存管理函数的应用场景

https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa366781(v=vs.85).aspx

         windows 内存管理并不像16-bit windows 提供分开的本地堆和全局堆的申请。因此选择Local 还是 Global 是个人的选择问题。由于16-bit 段内存管理到32-bit 虚拟内存管理的转变,一些相关的Global 和 Local 函数和它们的一些可选属性都变得不必要或者没有意义。例如,由于Global 和 Local 函数都返回32-bit 地址,这里没有near 和 far 的概念。

        使用Global 和 Local 申请的内存对象是具有可读写属性的私有提交页面,其它的进程不可以访问,使用GMEM_DDESHARE 标志调用GlobalAlloc 申请的内存并不能像在16-bit 下一样被所有的进程访问。保留该参数,仅仅是为了兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值