Pilas con Memoria Dinámica
Enviado por Luis De la Cruz • 3 de Septiembre de 2019 • Apuntes • 2.102 Palabras (9 Páginas) • 441 Visitas
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA[pic 1]
Programación 1
Sección: “B”
Ing. Antonio Escobar.
Pilas con Memoria Dinamica
Luis Fernando De la Cruz Santos
0901-18-17144
Pilas con Memoria Dinámica
La memoria dinámica se refiere a aquella memoria que no puede ser definida ya que no se conoce o no se tiene idea del número de la variable a considerarse, la solución a este problema es la memoria dinámica que permite solicitar memoria en tiempo de ejecución, por lo que cuanta más memoria se necesite, más se solicita al sistema operativo. El sistema operativo maneja la memoria gracias al uso de punteros, por la misma naturaleza del proceso nos impide conocer el tamaño de la memoria necesaria en el momento de compilar.
Un dato importante es que como tal este tipo de datos se crean y se destruyen mientras se ejecuta el programa y por lo tanto la estructura de datos se va dimensionando de forma precisa a los requerimientos del programa, evitándonos así perder datos o desperdiciar memoria si hubiéramos tratado de definirla cantidad de memoria a utilizar en el momento de compilar el programa.
Cuando se crea un programa en el que es necesario manejar memoria dinámica el sistema operativo divide el programa en cuatro partes que son: texto, datos (estáticos), pila y una zona libre o heap. En la última parte es donde queda la memoria libre para poder utilizarla de forma dinámica. En el momento de la ejecución habrá tanto partes libres como partes asignadas al proceso por lo cual si no se liberan las partes utilizadas de la memoria y que han quedado inservibles es posible que se “agote” esta parte y por lo tanto la fuente de la memoria dinámica. También la pila cambia su tamaño dinámicamente, pero esto no depende del programador sino del sistema operativo.
Ejemplo de pila dinamica:
# include
# include
using namespace std;
struct pilas
{
int valor;
pilas *direccionA;
};
pilas *pilao, *pilaaux;
void ingreso();
void mostrar();
int main()
{
int opcion;
while (true) {
cout << "1 Ingreso de datos a la pila" << endl;
cout << "2 Leer datos de la pila" << endl;
cin >> opcion;
switch (opcion) {
case 1: {
ingreso();
break;
}
case 2: {
mostrar();
break;
}
}
}
}
void ingreso() {
system("cls");
if (pilao == NULL) {
pilao = new(pilas);
cout << "Mi Direccion " << pilao << endl;
cout << "Ingrese PRIMER dato a la pila" << endl;
cin >> pilao->valor;
...