LocalAlloc

This function allocates the specified number of bytes from the heap. In the linear Windows CE API environment, there is no difference between the local heap and the global heap.

At a Glance

Header file: Winbase.h
Windows CE versions: 1.0 and later

Syntax

HLOCAL LocalAlloc(UINT uFlags, UINT uBytes);

Parameters

uFlags

[in] Specifies how to allocate memory. If zero is specified, the default is the LMEM_FIXED flag. This parameter is one of the following flags:

Value Description
LMEM_FIXED Allocates fixed memory. The return value is a pointer to the memory object.
LPTR Combines the LMEM_FIXED and LMEM_ZEROINIT flags.
LMEM_ZEROINIT Initializes memory contents to zero.

uBytes

[in] Specifies the number of bytes to allocate.

Return Values

A handle to the newly allocated memory object indicates success. NULL indicates failure. To get extended error information, call GetLastError.

Remarks

If the heap does not contain sufficient free space to satisfy the request, LocalAlloc returns NULL. Because NULL is used to indicate an error, virtual address zero is never allocated. It is, therefore, easy to detect the use of a NULL pointer.

If this function succeeds, it allocates at least the amount requested. If the amount allocated is greater than the amount requested, the process can use the entire amount. To determine the actual number of bytes allocated, use the LocalSize function.

To free the memory, use the LocalFree function.

For Windows CE version 1.0 and 1.01, the local heap for each process cannot exceed 1 MB. However, a process can create multiple heaps using the HeapCreate function and each of these heaps can be up to 1 MB.

See Also

LocalFree, LocalReAlloc, LocalSize