GlobalAlloc解释

时间:2010-11-10 02:51:01

标签: c++ winapi

(char*)GlobalAlloc(GPTR, len + 1);

这是我在教程中使用的代码行。我正在读EDITTEXT。我最想知道GPTR来自哪里,以及它的用途。它尚未在代码中的任何其他位置定义。

我已基本了解其余部分,但MSDN的解释并不十分清楚。他们这样说:

HGLOBAL WINAPI GlobalAlloc(
  __in  UINT uFlags,
  __in  SIZE_T dwBytes
);

有人可以用简明的英语解释GPTR来自哪里,它是什么,以及它与__in UINT uFlags的关系?我知道这是一个unsigned int,但知情就停止了。

提前致谢。

2 个答案:

答案 0 :(得分:3)

GPTR是GMEM_FIXED和GMEM_ZEROINIT(OR)的组合。

<强> uFlags
内存分配属性。如果指定为零,则默认值为GMEM_FIXED。除了特别指出的不兼容组合之外,此参数可以是以下一个或多个值。

价值意义
     GHND 0x0042合并GMEM_MOVEABLE和GMEM_ZEROINIT。
     GMEM_FIXED 0x0000分配固定内存。返回值是指针      GMEM_MOVEABLE 0x0002分配可移动内存。内存块永远不会在物理内存中移动,但可以在默认堆中移动它们。此值不能与GMEM_FIXED结合使用      GMEM_ZEROINIT 0x0040将内存内容初始化为零      GPTR 0x0040合并GMEM FIXED和GMEM_ZEROINIT。

答案 1 :(得分:0)

参考here

GPTR 0x0040合并GMEM_FIXED和GMEM_ZEROINIT。

如您所见,它只是一个位模式(0x0040),可以与其他允许的标志结合使用