Diferencia entre revisiones de «free()»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo)
Línea 2: Línea 2:
 
Desasignar bloque de memoria.
 
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.  
+
Un bloque de memoria asignado previamente por una llamada a [[malloc()]], [[calloc()]] o [[realloc()]] está desasignado, volviendo a estar disponible para otras asignaciones.  
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 10: Línea 10:
  
 
== Parámetros ==
 
== Parámetros ==
;ptr: Puntero a un bloque de memoria previamente asignado con [[malloc]], [[Calloc]] o [[realloc]].
+
;ptr: Puntero a un bloque de memoria previamente asignado con [[malloc()]], [[calloc()]] o [[realloc()]].
  
 
== Retorno ==
 
== Retorno ==
 
Nada
 
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 ==
 
== Advertencias ==
* Si ptr no apunta a un bloque de memoria asignado con las funciones [[malloc]], [[Calloc]] o [[realloc]], causa un comportamiento indefinido.  
+
* 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.  
 
* 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).
 
* 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).
Línea 33: Línea 38:
  
 
== Vea también ==
 
== Vea también ==
 +
* [[malloc()]]
 +
* [[calloc()]]
 +
* [[realloc()]]
  
 
== Referencias ==
 
== Referencias ==

Revisión del 09:26 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