LocalAlloc

【勇芳软件工作室】汉化HomePreviousNext

LocalAlloc函数从堆中分配指定的字节数。在线性Win32 API环境中,本地堆和全局堆之间没有区别。

HLOCAL LocalAlloc(

UINT 【uFlags】,//分配属性
UINT 【指向包含要写入文件的数据的缓冲区。】//要分配的字节数
); 

参数

【uFlags】

指定如何分配内存。如果指定为零,则默认值为LMEM_FIXED标志。除了具体注明的不兼容的组合外,还可以指定以下标志的任意组合。要指示功能是分配固定或可移动内存,请指定前六个标志之一:

含义
LMEM_FIXED 
 分配固定内存该标志不能与LMEM_MOVEABLE或LMEM_DISCARDABLE标志组合。返回值是指向内存块的指针。要访问内存,调用进程只需将返回值转换为指针即可。
LMEM_MOVEABLE 
 分配可移动内存该标志不能与LMEM_FIXED标志组合。返回值是内存对象的句柄。句柄是调用进程私有的32位数。要将句柄转换为指针,请使用LocalLock功能。
LPTR 
 组合LMEM_FIXED和LMEM_ZEROINIT标志。
LHND 
 组合LMEM_MOVEABLE和LMEM_ZEROINIT标志。
NONZEROLHND 
 与LMEM_MOVEABLE标志相同。
NONZEROLPTR 
 与LMEM_FIXED标志相同。
LMEM_DISCARDABLE 
 分配可丢弃的内存。该标志不能与LMEM_FIXED标志组合。一些基于Win32的应用程序可能会忽略此标志。
LMEM_NOCOMPACT 
 不压缩或丢弃内存以满足分配请求。
LMEM_NODISCARD 
 不丢弃内存以满足分配请求。
LMEM_ZEROINIT 
 将内存初始化为零。

【指向包含要写入文件的数据的缓冲区。】

指定要分配的字节数。如果此参数为零,并且【uFlags】参数指定LMEM_MOVEABLE标志,该函数将返回一个被标记为已丢弃的内存对象的句柄。

返回值

如果函数成功,则返回值是新分配的内存对象的句柄。

如果函数失败,返回值为NULL。要获取扩展错误信息,请调用GetLastError.

备注

如果堆不包含足够的可用空间来满足请求,LocalAlloc返回NULL。

GlobalAllocLocalAlloc功能限于每个进程的GMEM_MOVEABLE和LMEM_MOVEABLE内存的总共65,536个句柄。此限制不适用于GMEM_FIXED或LMEM_FIXED内存。

如果此函数成功,则至少分配所请求的数量。如果分配的金额大于所要求的金额,则该过程可以使用整个金额。要确定分配的实际字节数,请使用LocalSize功能。

也可以看看

GlobalAlloc, LocalFree, LocalLock, LocalReAlloc, LocalSize