viernes, 21 de febrero de 2014

MEMORIA ESTATICA Y DINAMICA


MEMORIA ESTÁTICA

La asignación de memoria puede hacerse en tiempo de compilación y los objetos están vigentes desde que comienza la ejecución del programa hasta que termina.

Ventajas:
*La velocidad de acceso es alta.
*Para retener los datos solo necesita estar energizada.
*Son más fáciles de diseñar.

Desventajas:
*No se puede modificar el tamaño de la estructura en tiempo de ejecución.
*No es optimo con grandes cantidades de datos.
*Desperdicio de memoria cuando no se utiliza en su totalidad de tamaño.


MEMORIA DINÁMICA

Es un espacio de almacenamiento que se solicita en tiempo de ejecución, de esa manera, a medida que el proceso va necesitando espacio para más lineas, va solicitando mas memoria al sistema operativo para guardarlas.

El medio para manejar la memoria que otorga el sistema operativo, es el puntero. Cuando se crea un programa en el que es necesario manejar memoria dinámica el sistema operativo divide el programa en cuatro partes: texto, datos (estáticos), pila y y una zona libre.

Ventajas:
*Se puede ir incrementando durante la ejecución del programa. Esto permite, por ejemplo, trabajar con arreglos dinámicos.
*El tamaño que la memoria reserva en tiempo de ejecución puede variar durante la ejecución del programa.

Desventajas:
*Es difícil implementar estructuras de datos complejas como son los tipos recursivos (arboles, grafos, etc.).
*Puede afectar el rendimiento del sistema.
*Busca un bloque de memoria libre y almacena la posición y tamaño de la memoria asignada, de manera que pueda ser liberada más adelante.


PROGRAMA REALIZADO EN C DE MANEJO DE PUNTEROS

#include <stdio.h>
#include <conio.h>

int mi_arreglo[] = {1,23,17,4,-5,100};
int *ptr;

int main(void)
{
 int i;
 ptr = &mi_arreglo[0]; /* apuntamos nuestro puntero
 al primer elemento del arreglo*/
 printf("\n");
 for (i = 0; i < 6; i++)
 {
 printf("mi_arreglo[%d] = %d \n", i, mi_arreglo[i]);
 }
 getch ();

 }


No hay comentarios.:

Publicar un comentario