Diferencia entre revisiones de «free()»
De ArduWiki
(Página creada con «== Descripción == Desasignar bloque de memoria. Un bloque de memoria asignado previamente por una llamada a malloc, Calloc o realloc está desasignado, volvie...») |
|||
(No se muestran 2 ediciones intermedias del mismo usuario) | |||
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]], [[ | + | 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]], [[ | + | ;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]], [[ | + | * 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). | ||
== Ejemplo == | == Ejemplo == | ||
− | + | <pre> | |
+ | 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); | ||
+ | } | ||
+ | </pre> | ||
== Vea también == | == Vea también == | ||
+ | * [[malloc()]] | ||
+ | * [[calloc()]] | ||
+ | * [[realloc()]] | ||
== Referencias == | == Referencias == |
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); }