请问GlobalAlloc和HeapAlloc有什么区别?

hhoking 2002-08-19 12:54:41
希望能回答的深入一些,一定给高分!

up也有分!不过不多哦 :)
...全文
392 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhoking 2002-08-19
  • 打赏
  • 举报
回复
这个问题不会没人回答吧?在线等待!结帖迅速!
OldRookie 2002-08-19
  • 打赏
  • 举报
回复
GlobalAlloc是win16留下来的函数,它调用HeapAlloc分配堆中的内存。在理想的win32环境下,我们不需要GlobalAlloc,但是实际上,我们还得保留从win16移植过来的许多代码。在这些代码中使用了“内存句柄”(HGLOBAL)参数而不是32位的内存地址。
GlobalAlloc根据其属性参数做两件不同的事情。如果参数指定了GMEM_FIXED,则GlobalAlloc简单调用HeapAlloc,把返回地址作为一个32位HGLOBAL值;如果参数指定了GMEM_MOVEABLE,则返回的HGLOBAL值是一个指向进程里句柄表中某一项入口的指针,该入口包含指向实际HeapAlloc
分配的内存的指针。
从本质上,如果我们不调用GlobalReAlloc函数,我们就可以用HeapAlloc代替GlobalAlloc。
hhoking 2002-08-19
  • 打赏
  • 举报
回复
既然GlobalAlloc分配的内存不可以移动,就是说也会产生碎片,那它到底
和HeapAlloc有什么区别?
yhb4 2002-08-19
  • 打赏
  • 举报
回复
GlobalAlloc分配的内存不可以移动,我只知道这些
hhoking 2002-08-19
  • 打赏
  • 举报
回复
请大家继续啊,up也有分!
jfzsl 2002-08-19
  • 打赏
  • 举报
回复
gz
wanglei888 2002-08-19
  • 打赏
  • 举报
回复
使用HeapAlloc分配的内存有两点和GlobalAlloc不同:

1、不可以移动,所以可能会产生内存碎片
2、可以提供串行化访问功能,多线程时不用自己再同步了
hhoking 2002-08-19
  • 打赏
  • 举报
回复
看了msdn的,讲的和很模糊,其实GlobalAlloc分配的内存在32位环境下也不能移动啊?
无聊客 2002-08-19
  • 打赏
  • 举报
回复
The HeapAlloc function allocates a block of memory from a heap. The allocated memory is not movable.
The GlobalAlloc function allocates the specified number of bytes from the heap. Win32 memory management does not provide a separate local heap and global heap.
看看msdn
wuxuan 2002-08-19
  • 打赏
  • 举报
回复
The GlobalAlloc function allocates the specified number of bytes from the heap. Windows memory management does not provide a separate local heap and global heap.

Note The global functions are slower than other memory management functions and do not provide as many features. Therefore, new applications should use the heap functions. However, the global functions are still used with DDE, the clipboard functions, and OLE data objects.

every 2002-08-19
  • 打赏
  • 举报
回复
我看几好多程序用GlobalAlloc但是都没注意
up

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧