Memoria dinamica

Solo disponible en BuenasTareas
  • Páginas : 11 (2644 palabras )
  • Descarga(s) : 7
  • Publicado : 24 de agosto de 2010
Leer documento completo
Vista previa del texto
Programaci´n Modular. ETSIT. 1o C. o Apuntes del profesor Juan Falgueras Cano Curso 2005

2 Memoria din´mica a
Contenido
2. Memoria din´mica a 2.1. Gesti´n din´mica de la memoria . . . . . . . o a 2.1.1. Punteros . . . . . . . . . . . . . . . . . 2.2. Punteros en pseudoc´digo . . . . . . . . . . . o 2.2.1. Utilidad de los punteros . . . . . . . . 2.2.2. Solicitud din´mica de memoria . . . . a2.2.3. C++ . . . . . . . . . . . . . . . . . . . 2.2.4. Arrays din´micos . . . . . . . . . . . . a 2.3. Estructuras de datos recursivas . . . . . . . . 2.4. Listas lineales de de nodos con simple y doble 2.5. Listas posicionales y ordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . enlace, cabeceras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 4 4 4 5 6 6 7 9

2.

Memoria din´mica a
Hasta ahora todos los tipos de datos predefinidos (enteros, reales,caracteres, booleanos) y definidos por el usuario (enumerados, y estructuras de datos arrays y registros) han sido de tipo est´tico. ¿Qu´ significa esto? Que su ubicaci´n y capacidad de almacenamiento quedan a e o r´ ıgidamente definidos desde el momento en que se declaran y no puede cambiar durante el funcionamiento del programa. Esto tiene la ventaja obvia de ser muy f´ciles de localizar en la a memoriainterna y tambi´n de simplificar y aligerar el c´digo de los programas ejecutables. e o Con los punteros las cosas no cambian: son est´ticos. Una variable de tipo puntero es una a variable est´tica, pero. . . la memoria a la que apuntan puede que no. a Vamos a ver en este tema c´mo se puede acceder directamente a la memoria interna libre del o sistema y c´mo se pueden conseguir y devolver montonesde memoria seg´n se necesiten a lo o u largo de la ejecucion de partes del programa.

2.1.

Gesti´n din´mica de la memoria o a

Las variables en los programas se declaran mediante un tipo (modo de codificaci´n) y un o nombre de variable. As´ para nosotros una variable es un identicador que se refiere a un espacio ı reservado de una manera definitiva (est´ticamente) por el compilador en alg´nlugar (que hasta a u ahora no nos ha interesado). 2.1.1. Punteros

Un puntero es una variable est´tica (como las vistas hasta ahora) pero destinada a a guardar direcciones de memoria de otras varibles. Lo que esto significa es que las direcciones de memoria pueden ser guardadas y manipuladas en nuestros programas. (Ver Figura 2) Una variable puntero (que no lo olvidemos, son en realidad ´ est´ticassiempre) puede guardar una direcci´n de memoria. Las cuestiones ahora son: ¿QUE dia o ´ ´ recci´n de memoria? , ¿COMO obtener direcciones de la memoria interna?, ¿PARA QUE guardar o esas direcciones?

2.1

Gesti´n din´mica de la memoria o a

2

a=33;

33

? 3 2 1 0

Figura 1: Hasta ahora no nos hemos preocupado de saber d´nde el compilador ubicaba o las variables est´ticas quehemos usado. a

3FA08 *p *p 33 33 3FA04 3FA00

p

3FA04 p 3FA04 001A2 00000

Figura 2: Aunque un puntero es una variable monol´ ıtica que apunta a una zona de memoria con otras variables; ´l mismo, el puntero es tambi´n una variable e e m´s en memoria. a

Para responder a estas preguntas veremos primero un m´todo b´sico para obtener direcciones e a de memoria; despu´s veremos un sistema delocalizar bloques de memoria y finalmente, con esto e habr´n quedado respondidas las tres preguntas. a No todos los lenguajes de programaci´n se arriesgan a permitir la gesti´n directa de la memoria o o mediante punteros1 . En C/C++: typedef int *TPuntEntero; // ´ int* TPuntEntero; o /* variables */ int *punt; TPuntEntero a, b; es lo mismo

Una cuesti´n muy importante respecto a los punteros, y...
tracking img