Compartir a través de


_freea

Desasigna o libera un bloque de memoria.

Sintaxis

void _freea(
   void *memblock
);

Parámetros

memblock
Bloque de memoria anteriormente asignada que se va a liberar.

Valor devuelto

Ninguno.

Comentarios

La _freea función desasigna un bloque de memoria (memblock) asignado previamente por una llamada a _malloca. _freea comprueba si la memoria se ha asignado en el montón o en la pila. Si se ha asignado en la pila, _freea no hace nada. Si se ha asignado en el montón, el número de bytes liberados es equivalente al número de bytes solicitado al asignar el bloque. Si memblock es NULL, se omite el puntero y _freea se devuelve inmediatamente. Si se intenta liberar un puntero no válido (un puntero a un bloque de memoria no asignado por _malloca) puede afectar a las solicitudes de asignación posteriores y provocar errores.

_freea llama free internamente si encuentra que la memoria se asigna en el montón. Si la memoria está en el montón o en la pila lo determina un marcador que se coloca en la memoria en la dirección inmediatamente anterior a la memoria asignada.

Si se produce un error al liberar memoria, en errno se muestra información sobre la naturaleza del error proporcionada por el sistema operativo. Para obtener más información, veaerrno, _doserrno, _sys_errlisty _sys_nerr.

Una vez liberado un bloque de memoria, _heapmin minimiza la cantidad de memoria libre en el montón al fusionar las regiones no usadas y liberarlas de nuevo en el sistema operativo. La memoria liberada que no se ha liberado en el sistema operativo se restaura en el grupo libre y vuelve a estar disponible para su asignación.

Una llamada a _freea debe ir acompañada de todas las llamadas a _malloca. También es un error llamar _freea dos veces en la misma memoria. Cuando la aplicación está vinculada a una versión de depuración de las bibliotecas en tiempo de ejecución de C, especialmente con _malloc_dbg características habilitadas mediante la definición _CRTDBG_MAP_ALLOCde , es más fácil encontrar llamadas que faltan o duplican a _freea. Para obtener más información sobre cómo se administra el montón durante el proceso de depuración, consulte El montón de depuración de CRT.

_freea está marcado como __declspec(noalias), lo que significa que se garantiza que la función no modifica las variables globales. Para obtener más información, vea noalias.

Requisitos

Función Encabezado necesario
_freea <stdlib.h> y <malloc.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

Vea el ejemplo de _malloca.

Consulte también

Asignación de memoria
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin