Memoria dinamica en c++

Solo disponible en BuenasTareas
  • Páginas : 14 (3308 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de marzo de 2012
Leer documento completo
Vista previa del texto
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. Datos din´micos: sutama˜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 asigna cuatro partes l´gicas enmemoria 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. (La pila tambi´n var´ su tama˜odin´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 con u a los tipos vistos hasta ahora s´lo podemosacceder 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 Pila

2.2

Tipo puntero

Las variables de tipo puntero son las que nos permiten referenciar datos din´micos. a Tenemos que diferenciarclaramente 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. F´ ı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 con un puntero que apunta a la direcci´n 78AC(16 , o la cual contiene 6677(16 :··· puntero 7881(16 ··· 78AA(16 78AB(16 contenido 78AC (16 78AD(16 78AE(16 ··· ··· 78AC (16 ··· AACC(16 6743(16 6677(16 AACC(16 6743(16 ···

Antes de definir los punteros, vamos a recordar c´mo puede darse nombre a tipos de o datos propios utilizando la palabra reservada 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 detypedef 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_luces semaforo; typedef int vector_de_20[20]; vector_de_20 mivector; Introduciremos las declaraciones de tipo antes de las declaraciones de variables en elc´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; PtrInt p; 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

// puntero a enteros // puntero a enteros

Para acceder a la variable apuntadahay 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, direcci´n o o que no necesitamos tratar directamente). El tipo registro o estructura en C++: struct. Una declaraci´n de estructura define o una variable estructura e indica una...
tracking img