Compartir a través de


free

Desasigna o libera un bloque de memoria.

Sintaxis

void free(
   void *memblock
);

Parámetros

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

Comentarios

La función free desasigna un bloque de memoria (memblock) que se había asignado previamente mediante una llamada a calloc, malloc o realloc. El número de bytes liberados es equivalente al número de bytes solicitados cuando se asignó el bloque (o reasignado, para realloc). Si memblock es NULL, se omite el puntero y free se devuelve inmediatamente. Puede que el intento de liberación de un puntero no válido (un puntero a un bloque de memoria que no se ha asignado con calloc, malloc o realloc) afecte a las solicitudes de asignación posteriores y provoque errores.

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.

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución de C, free se resuelve como _free_dbg. 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.

free 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.

Para liberar memoria asignada con _malloca, use _freea.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

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

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

Ejemplo

Vea el ejemplo de malloc.

Consulte también

Asignación de memoria
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea