Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P - S2 - Lectura - Tema 2. Memoria Dinamica y Punteros
P - S2 - Lectura - Tema 2. Memoria Dinamica y Punteros
MEMORIA DINÁMICA y
Universidad de Valladolid PUNTEROS
Campus de Segovia
______________________
•Introducción
•Conceptos básicos
TEMA 2: •Definición y declaración de punteros
•Creación y destrucción de variables dinámicas.
MEMORIA DINÁMICA y •Operaciones básicas con datos referenciados
1 2
INTRODUCCIÓN INTRODUCCIÓN
• La definición y manipulación de estos objetos se realiza en
• Las estructuras de datos hasta ahora vistas se almacenan Pascal mediante los punteros (variables cuyo contenido son
estáticamente en la memoria física del ordenador.
posiciones de memoria).
3 4
CONCEPTOS BÁSICOS
• Un puntero es una variable que contiene la dirección de
REPRESENTACIÓN GRÁFICA
memoria donde se encuentra almacenado un dato.
Dirección de
Memoria
memoria DATO
0123 4567 1365 2056 puntero
Variable
1365 2056 DATO referenciada
5 6
DEFINICIÓN Y DECLARACIÓN DE
DIAGRAMA SINTÁCTICO
PUNTEROS
• Una variable de tipo puntero ocupa una cantidad de • Para poder emplear variables dinámicas es
memoria fija, independiente del tipo de dato al que necesario emplear un tipo de dato que permita
apunta. referenciar nuevas posiciones de memoria que no
han sido declaradas a priori y que se van a crear y
destruir en tiempo de ejecución.
• Un dato referenciado, como el del ejemplo, no posee
existencia inicial, o lo que es lo mismo no existe
inicialmente espacio reservado en memoria para el. • Estas variables son los punteros que en Pascal es un
tipo de dato simple.
9 10
– New(puntero)
– Dispose(puntero) ???????
11 12
DESTRUCCIÓN DE UNA VARIABLE OPERACIONES BÁSICAS CON
DINÁMICA VARIABLES REFERENCIADAS
• Dispose(puntero)
– Libera la memoria asociada a la variable referida (dejándola
• El contenido de la variable referenciada por el
libre para otros fines). puntero se denota:
– Deja indefinido el valor del puntero. puntero^
• Gráficamente esto se representa: • Las operaciones permitidas para esta nueva
variables son:
????????? – Asignación
– Lectura
– Escritura
– Todas las operaciones legales que se puedan realizar con
dicho tipo.
13 14
Apnum1=Apnum2
• Apnum1=Apnum2
– La asignación (se asignan las direcciones entre sí, no los
contenidos de los datos apuntados). • La comparación anterior daría como resultado el
valor ‘false’ ya que cada uno apunta a una dirección
Apnum1:=Apnum2 de memoria diferente.
19 20
LA ASIGNACIÓN LA ASIGNACIÓN
Apnum1 Apnum2 Apnum1 Apnum2
3 5
3 5
21 22
EL VALOR NIL
CONSISTENCIA ENTRE TIPOS
• Un modo alternativo de asignar un valor a un puntero
es indicar que no apunta a ningún dato. Esto se lleva
• Operaciones válidas a cabo mediante la constante predefinida “nil”
• Representación gráfica:
– Apnum1:=Apchar;
– Apnum1=Apvector;
23 24
APLICACIONES NO RECURSIVAS CON ASIGNACIÓN DE DATOS
PUNTEROS COMPUESTOS
25 26
29 30