free()

De ArduWiki
Revisión del 13:36 15 jul 2018 de Kike GL (Discusión | contribuciones) (Kike GL trasladó la página free a free() sin dejar una redirección)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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