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