_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_errlist
y _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_ALLOC
de , 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