memoria

Páginas: 13 (3172 palabras) Publicado: 28 de octubre de 2013
Tema 2
Memoria Din´mica
a
2.1

Datos est´ticos y din´micos
a
a

Datos est´ticos: su tama˜o y forma es constante durante la ejecuci´n de un programa
a
n
o
y por tanto se determinan en tiempo de compilaci´n. El ejemplo t´
o
ıpico son los arrays.
Tienen el problema de que hay que dimensionar la estructura de antemano, lo que puede
conllevar desperdicio o falta de memoria.
Datosdin´micos: su tama˜o y forma es variable (o puede serlo) a lo largo de un
a
n
programa, por lo que se crean y destruyen en tiempo de ejecuci´n. Esto permite dimeno
sionar la estructura de datos de una forma precisa: se va asignando memoria en tiempo
de ejecuci´n seg´n se va necesitando.
o
u
Cuando el sistema operativo carga un programa para ejecutarlo y lo convierte en
proceso, le asignacuatro partes l´gicas en memoria principal: texto, datos (est´ticos),
o
a
pila y una zona libre. Esta zona libre (o heap) es la que va a contener los datos din´micos,
a
la cual, a su vez, en cada instante de la ejecuci´n tendr´ partes asignadas a los mismos y
o
a
partes libres que fragmentar´n esta zona, siendo posible que se agote si no se liberan las
a
partes utilizadas ya inservibles. (Lapila tambi´n var´ su tama˜o din´micamente, pero
e
ıa
n
a
la gestiona el sistema operativo, no el programador):
Para trabajar con datos din´micos necesitamos dos cosas:
a
1. Subprogramas predefinidos en el lenguaje que nos permitan gestionar la memoria
de forma din´mica (asignaci´n y liberaci´n).
a
o
o
2. Alg´n tipo de dato con el que podamos acceder a esos datos din´micos (ya que conu
a
los tipos vistos hasta ahora s´lo podemos acceder a datos con un tama˜o y forma
o
n
ya determinados).
1

E.T.S.I. Telecomunicaci´n
o

Laboratorio de Programaci´n 2
o

Texto del programa

Datos estáticos
límite de la zona estática
zona dinámica
fragmentada
límite de la pila
puntero de pila

2.2

Pila

Tipo puntero

Las variables de tipo puntero son las que nospermiten referenciar datos din´micos.
a
Tenemos que diferenciar claramente entre:
1. la variable referencia o apuntadora, de tipo puntero;
2. la variable an´nima referenciada o apuntada, de cualquier tipo, tipo que estar´
o
a
asociado siempre al puntero.

ısicamente, un puntero no es m´s que una direcci´n de memoria. En el siguiente ejemplo
a
o
se muestra el contenido de la memoria conun puntero que apunta a la direcci´n 78AC(16 ,
o
la cual contiene 6677(16 :
···

···
78AC (16
···

78AA(16

AACC(16

78AB(16

6743(16

78AC (16

6677(16

78AD(16

AACC(16

78AE(16

6743(16

···

contenido

7881(16
···

puntero

···

Antes de definir los punteros, vamos a recordar c´mo puede darse nombre a tipos de
o
datos propios utilizando la palabrareservada typedef. El uso de typedef (definici´n de
o
tipo) en C++ permite definir un nombre par un tipo de datos en C++. La declaraci´n
o
de typedef es similar a la declaraci´n de una variable. La forma es: typedef tipo
o
nuevo-tipo;.
Ejemplos:
2

Memoria Din´mica
a

typedef char LETRA;
LETRA caracter;
typedef enum luces_semaforo {Rojo, Amarillo, Verde} estado_luces;
estado_lucessemaforo;
typedef int vector_de_20[20];
vector_de_20 mivector;
Introduciremos las declaraciones de tipo antes de las declaraciones de variables en el
c´digo.
o
Definiremos un tipo puntero con el car´cter asterisco (*) y especificando siempre el
a
tipo de la variable referenciada. Ejemplo:
typedef int *PtrInt;

// puntero a enteros

PtrInt p;

// puntero a enteros

O bien directamente:int *p; // puntero a enteros
Cuando p est´ apuntando a un entero de valor -13, gr´ficamente lo representaremos as´
e
a
ı:
p
-13

Para acceder a la variable apuntada hay que hacerlo a trav´s de la variable puntero,
e
ya que aqu´lla no tiene nombre (por eso es an´nima). La forma de denotarla es *p. En
e
o
el ejemplo *p = -13 (y p = direcci´n de memoria de la celda con el valor -13,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • La memoria
  • Memoria
  • Memoria
  • Memoria
  • Memoria
  • La Memoria
  • Memorias
  • Memorias

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS