Diferencia entre revisiones de «free()»
De ArduWiki
(Sin diferencias)
|
Revisión actual del 13:36 15 jul 2018
Contenido
Descripción
Desasignar bloque de memoria.
Un bloque de memoria asignado previamente por una llamada a malloc(), calloc() o realloc() está desasignado, volviendo a estar disponible para otras asignaciones.
Sintaxis
free(ptr);
Parámetros
Retorno
Nada
Comentarios
- Solo se modifica el almacenamiento al que se hace referencia por ptr.
- No se accede a ninguna otra ubicación de almacenamiento mediante la llamada.
- Si la función libera una unidad de almacenamiento que se reutiliza mediante una llamada a funciones de asignación (como calloc() o malloc(), las funciones se sincronizan de tal manera que la desasignación ocurre completamente antes de la siguiente asignación.
Advertencias
- Si ptr no apunta a un bloque de memoria asignado con las funciones malloc(), calloc() o realloc(), causa un comportamiento indefinido.
- Si ptr es un puntero nulo, la función no hace nada.
- Tenga en cuenta que esta función no cambia el valor de ptr en sí, por lo tanto, todavía apunta a la misma ubicación (ahora no válida).
Ejemplo
void funcion(){ int * buffer1, * buffer2, * buffer3; buffer1 = (int*) malloc(100* sizeof(int)); buffer2 = (int*) calloc(100, sizeof(int)); buffer3 = (int*) realloc(buffer2, 500*sizeof(int)); free (buffer1); free (buffer3); }