Diferencia entre revisiones de «free()»

De ArduWiki
Saltar a: navegación, buscar
m (Kike GL trasladó la página free a free() sin dejar una redirección)
 
(Sin diferencias)

Revisión actual del 09:36 15 jul 2018

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

ptr
Puntero a un bloque de memoria previamente asignado con malloc(), calloc() o realloc().

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);
}

Vea también

Referencias