free
|
Definido en el encabezado
<stdlib.h>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Libera el espacio previamente asignado por malloc() , calloc() , aligned_alloc() , (since C11) o realloc() .
Si
ptr
es un puntero nulo, la función no hace nada.
El comportamiento es indefinido si el valor de
ptr
no es igual a un valor devuelto anteriormente por
malloc()
,
calloc()
,
realloc()
, o
aligned_alloc()
(desde C11)
.
El comportamiento es indefinido si el área de memoria referida por
ptr
ya ha sido desasignada, es decir,
free()
,
free_sized()
,
free_aligned_sized()
(desde C23)
, o
realloc()
ya ha sido llamada con
ptr
como argumento y ninguna llamada a
malloc()
,
calloc()
,
realloc()
, o
aligned_alloc()
(desde C11)
resultó en un puntero igual a
ptr
posteriormente.
El comportamiento es indefinido si después de que
free()
retorna, se realiza un acceso a través del puntero
ptr
(a menos que otra función de asignación resultara en un valor de puntero igual a
ptr
).
|
Una llamada a
|
(desde C11) |
Contenidos |
Parámetros
| ptr | - | puntero a la memoria para desasignar |
Valor de retorno
(ninguno)
Notas
La función acepta (y no hace nada con) el puntero nulo para reducir la cantidad de casos especiales. Ya sea que la asignación tenga éxito o no, el puntero devuelto por una función de asignación puede pasarse a
free()
.
Ejemplo
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // cada puntero asignado debe liberarse int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 no nulo significa que p2 fue liberado por realloc free(p3); else // p3 nulo significa que p2 no fue liberado free(p2); }
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.24.3.3 La función free (p: 365)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.22.3.3 La función free (p: 254)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.22.3.3 La función free (p: 348)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.20.3.2 La función free (p: 313)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.10.3.2 La función free
Véase también
|
asigna memoria
(función) |
|
|
(C23)
|
desasigna memoria previamente asignada con tamaño
(función) |
|
(C23)
|
desasigna memoria previamente asignada con tamaño y alineación
(función) |
|
Documentación de C++
para
free
|
|