" Conceptos básicos


Para efectos de nuestro estudio, llamaremos variables automáticas a las creadas en la pila (stack) y variables dinámicas a las creadas en el montículo (heap).

Un apuntador es una variable cuyo contenido es un valor entero sin signo( de 16 o 32 bits ), el cual representa una dirección de memoria. La dirección de memoria puede corresponder a una variable creada en la pila o en el montículo.

Los apuntadores son una de las herramientas más poderosas con que cuenta el Lenguaje C++ . Desafortunadamente, muchos programadores han creado el mito de que el estudio de los apuntadores es muy complicado, lo cual ha desarrollado una fobia entre quienes se inician en el estudio del lenguaje.

En las unidades anteriores se han utilizado variables automáticas. Para el manejo de las variables dinámicas es indispensable el uso de apuntadores; mientras que para las variables automáticas, los apuntadores son una alternativa.




Para cada programa, dependiendo del espacio requerido para el código y para los datos, se puede utilizar un modelo de memoria específico. El modelo predeterminado en el C++ de Borland es el modelo SMALL.

A continuación se presenta una breve descripción de los modelos de memoria manejados por el C++ de Borland :

Con el modelo de memoria TINY se utiliza un solo segmento (64 KB) para el código, los datos y la pila. La utilización del modelo TINY es aconsejable únicamente cuando se quiere crear un archivo .COM

En el modelo SMALL, el código se almacena en un segmento y los datos en otro. Este modelo de memoria se recomienda para programas .EXE de tamaño medio.

Cuando se usa el modelo MEDIUM, los datos están limitados a un segmento pero el código puede utilizar varios (hasta 16 MB). El uso de este modelo se recomienda cuando se tiene un programa grande con pocos datos.

El modelo COMPACT es lo contrario de MEDIUM, ya que limita el código a un segmento mientras que los datos pueden ocupar varios (hasta 16 MB).
Este modelo es recomendable cuando se tienen programas hasta de tamaño medio con muchas variables ó variables muy grandes.

En los modelos LARGE y HUGE, el código y los datos pueden ocupar varios segmentos (hasta 16 MB). La diferencia entre estos modelos es que el HUGE puede manejar variables automáticas que, en total, excedan los 64 KB.

La tabla 6.1 muestra los modificadores predeterminados para los apuntadores a funciones y apuntadores a datos en los diferentes modelos de memoria.




NOTA: Cuando se compila un módulo, el código resultante no debe ser mayor que 64 KB, ya que debe caber en un segmento de código. Esto debe cumplirse aún cuando se esté utilizando un modelo de memoria que utilice varios segmentos para el código (MEDIUM, LARGE, HUGE).

De manera similar, en el caso del modelo HUGE no debe haber datos automáticos de más de 64 KB en cada módulo.