jueves, 31 de marzo de 2011

Estructura de Datos

Memoria Estatica y Dinamica

Que  es  memoria?
Es un espacio logico para  guardar  informacion
Que es estática?
Que no se modifica al menos en tiempo de ejecucion
Que es dinamica?
Que se modifica permanentemente .
Memoria  estatica



su tamaño y forma es constante durante la ejecucion de un programa
y por tanto se determinan en tiempo de compilacion. El ejemplo tipico son los arrays.
Tienen el problema de que hay que dimensionar la estructura de antemano, lo que puede
conllevar desperdicio o falta de memoria.


    Concideraciones
  •      Error en tiempo de ejecucion de indice fuera de rango
  •      Se debe conocer con anticipación el tamaño de la estructura V [3 ], M[2,2], C[5,3,2]
  •      Se guarda en memoria adyacente ejem
  •      Vectores, Matrices, Cubos, registros, archivos
    Ventajas
  •      Lógica simple
  •      Optimo para resolverproblemas P y M
    Desventajas
  •      No se puede modificar el tamaño de las estructuras en T.D.E
  •      No se obtima con grandes cantidades de datos
  •      Desperdicio de momoria cando no se utiliza la totalidad del tamaño por ejem V[100]
Memoria Dinamica

Puede identificarse en tiempo de ejecucion 
 
Es la forma de implementación de una estructura de datos usando la memoria en forma dinámica del computador, esto consiste en que nuestro programa o estructura de dato solicite un espacio de memoria libre al Sistema Operativo, el Sistema Operativo verifica si existe el tamaño solicitado y lo asigna si lo hubiera ,caso contrario devuelve un puntero nulo.   De la misma forma solicitada una ves ya no usada s debe devolver al Sistema Operativo.  

 
    Consideraciones
  •      Manejo transparente del tamaño de la estructura
  •      Se guarda donde se encuentra el espacio
  •      No se guarda necesariamente en memoria adyacente
    Ventajas
  •      El tamaño de la estructura no infiere en la lógica del programa
  •       Es posible disponer de un espacio de memoria arbitrario que dependa de información dinámica (disponible sólo en ejecución) Toda esa memoria que maneja es implementada por el programador cuando fuese necesario.
    Desventajas
    
  • Es difícil de implementar en el desarrollo de un programa o aplicación.
  • Es difícil implementar estructuras de datos complejas como son los tipos recursivos (árboles, grafos, etc.).Por ello necesitamos una forma para solicitar y liberar memoria para nuevas variables que puedan ser necesarias durante la ejecución de nuestros programas