GoConqr hat ein neues Design! Sag uns, wie es dir gefällt.

Notizen

Memoria Dinámica

carlos zamudio Spanisch 1 Seite

Inhalt der Notizen (1)

Seite 1

Memoria Dinámica

Introducción

• En muchas ocasiones no es posible conocer de antemano la

cantidad de variables necesarias para un programa

computacional.

• Existen aplicaciones que requieren de enormes cantidades de

arreglos o datos por momentos breves en el funcionamiento

del mismo, por lo que no es viable declarar de antemano a

estas como variables, globales o locales de una función. Lo

anterior implica emplear funciones de ANSI C que permiten

reservar memoria de manera dinámica y ampliarla, reducirla

o destruirla en tiempo de ejecución.

• El manejo de memoria dinámica es la base del poder del

lenguaje C y le da la capacidad de crear programas complejos

que emplean grandes cantidades de memoria y los maneja de

manera eficiente.

• Todos los programas definen variables que pueden ser

definidas como globales y locales.

• Las variables globales y del programa principal (main) se

almacenan en posiciones fijas de la memoria llamada

memoria de datos.

• Las variables locales se almacenan en el segmento de

memoria llamada pila y existen solo cuando se hace una

invocación a la función que las declaro. También se pueden

declarar variables estáticas locales que también se

almacenan en segmentos fijos de memoria o en la

memoria de datos, sin embargo, también están

disponibles en la función que las declaro.

• Todas estas variables comparten una característica en

común, se definen cuando se compila el programa. Esto

significa que el compilador reserva espacio en memoria para

almacenar los valores para estas variables.

• Sin embargo, no todas las veces es posible conocer el

numero de variables con el que va a constar nuestro

programa. C ofrece al desarrollador la opción de crear

diferentes tipos de variables de forma dinámica, para crear

tales variables se utilizan funciones como: malloc(),

realloc(), calloc(), y free().

• Las regiones de memoria que reservan/liberan estas

funciones son almacenadas en el montículo o heap.

Asignación dinámica de memoria

• Por lo regular cuando se diseña un algoritmo, se debe

conocer que elementos de entrada tendrá y cual será la

salida, sin embargo, en algunas ocasiones no se sabe de

forma exacta el numero de variables que requerirá

nuestro algoritmo.

• Por ejemplo, suponga que se van a registrar el numero

de calificaciones de un conjunto de alumnos, para

resolver este problema se podría utilizar una arreglo de

calificaciones, sin embargo, si el numero de alumnos

crece, nuestro programa ya no seria valido, puesto que

no existen los recursos necesarios para almacenar todos

los datos validos.

• El espacio de memoria asignado a una variable

generada de manera dinámica se crea durante la

ejecución del programa (tiempo de ejecución), al

contrario de las variables declaradas en código, que

el espacio de memoria se les asigna en tiempo de

compilación.

• Una variable que es generada dinámicamente, se

construye (por ejemplo con malloc) y se puede

destruir en tiempo de ejecución (uso de free).

Función malloc()

• malloc() es la forma más habitual de obtener

bloques de memoria dinámica. La función genera o

asigna un bloque de memoria que es el numero de

bytes pasados como argumento.

• malloc() devuelve un apuntador void* al bloque de

memoria asignado, por lo tanto, hay que realizar un

cast al tipo de apuntador requerido, para hacer

buen uso de la memoria o de los datos que se

lleguen a almacenar en dicho bloque de memoria.

Nota: Todas las funciones de asignación dinámica de

memoria se encuentran definidas en la biblioteca

stdlib.h

• El prototipo de la función malloc() sería:

void* = malloc( size_t bytes);

• Donde:

• void*: es el apuntador que almacenará la

referencia o apuntara al bloque de

memoria generado.

• bytes: es el tamaño en bytes del bloque

de memoria que se va a solicitar.

Por ejemplo:

Memoria Dinámica

Informationen

Beschreibung
Carlos Roberto Rocha Zamudio boleta: 2014350645
Erstellt von
carlos zamudio · Mär 2016
Aktualisiert
11 Mär 2016
Aufrufe
15
Tags
h1h2h3
Bewertung

Feedback

Worum geht es?

Wie gefällt dir das neue Design?

Dein Eindruck