winbase.h


LocalAlloc

La función LocalAlloc reserva el número de bytes de memoria especificados desde el montón. En el entorno lineal del API Win32, no hay diferencias entre el montón local y el global.

Sintaxis

HLOCAL LocalAlloc(
    UINT uFlags,  // atributos de memoria
    UINT uBytes   // número de bytes a reservar
   );

Parámetros:

uFlags: especifica el modo de reservar la memoria. Si se especifica cero, el valor por defecto es LMEM_FIXED. Excepto para las combinaciones incompatibles que se comentan específicamente, se puede especificar cualquier combinación de las banderas siguientes. Para indicar si la función debe reservar memoria fija o móvil, especificar uno de las seis primeras banderas:

Bandera Significado
LMEM_FIXED Reserva memoria fija. Esta bandera no se puede combinar con LMEM_MOVEABLE o LMEM_DISCARDABLE. El valor de retorno es un puntero al bloque de memoria. Para acceder a la memoria, el proceso tan sólo debe hacer un casting del valor de retorno al puntero adecuado.
LMEM_MOVEABLE Reserva memoria móvil. Esta bandera no se puede combinar con LMEM_FIXED. El valor de retorno es un manipulador al objeto de memoria. Este manipulador es un valor de 32 bit privado para el proceso que lo ha obtenido. Para convertir este manipulador en un puntero se usa la función LocalLock.
LPTR Combina las banderas LMEM_FIXED y LMEM_ZEROINIT.
LHND Combina las banderas LMEM_MOVEABLE y LMEM_ZEROINIT.
NONZEROLHND Equivale a la bandera LMEM_MOVEABLE.
NONZEROLPTR Equivale a la bandera LMEM_FIXED.
LMEM_DISCARDABLE Reserva memoria descartable. Esta bandera no puede combinarse con LMEM_FIXED. Algunas aplicaciones basadas en Win32 pueden ignorar esta opción.
LMEM_NOCOMPACT No compacta o descarta memoria para satisfacer una petición de memoria.
LMEM_NODISCARD No descarta memoria para satisfacer una petición de memoria.
LMEM_ZEROINIT Inicializa el contenido de la memoria con ceros.

uBytes: especifica el número de bytes a reservar. Si este parámetro es cero y el parámetro uFlags especifica la bandera LMEM_MOVEABLE, la función devuelve un manipulador a un objeto de memoria que está marcado como descartado.

Valor de retorno

Si la función tiene éxito, el valor de retorno es el manipulador del nuevo objeto de memoria creado.

Si la función falla, el valor de retorno es NULL. Para obtener información más detallada sobre el error, llamar a la función GetLastError.

Observaciones

Si el montón no contiene suficiente espacio libre de memoria para satisfacer la petición, LocalAlloc devuelve NULL.

Las funciones GlobalAlloc y LocalAlloc están limitadas a un total de 65.536 manipuladores de memoria GMEM_MOVEABLE y LMEM_MOVEABLE por proceso. Esta limitación no se aplica a memoria GMEM_FIXED o LMEM_FIXED.

Si la función tiene éxito, reserva al menos la cantidad pedida. Si la cantidad reservada es mayor que la pedida, el proceso puede usar la totalidad de la reservada. Para determinar en número de bytes actualmente reservados, usar la función LocalSize.