Memoria dinamica C++
La asignación dinámica de memoria es útil en extremo cuando se manejan listas, debido a que permite que se expanda la lista conforme se agregan nuevos elementos y se con conforme se eliminan. Un ejemplo clásico es el numero de alumnos de un salón, la cantidad de alumno puede ser N, y generar un arreglo como : a[10] solo almacenara 10 alumnos y si son 30 no funcionara, es muy útil tener un mecanismo mediante el cual el arreglo pueda agrandarse y reducirse según sea necesario. Dos operadores en C++, new y delete,
new
Reserva el número de bytes solicitado por la declaración. Devuelve la
dirección de la primera ubicación reservada o NULL si no se dispone de
suficiente memoria.
delete
Libera un bloque de bytes reservado con anterioridad. La dirección de la
primera ubicación reservada debe transmitirse como un argumento al operador.
Ejemplos
New
//Francys System //uso del new int *calificaciones = new int; //el puntero se utiliza para asignar un espacio de memoria de tipo int //otra manera int *verduras; verduras = new int(103); //Se inicializa el en 5
Arreglos
//Francys System //uso del new int *calificaciones; calificaciones = new int[10];
Otra manera
//Francys System //uso del new int calificaciones = new int[10]; //Un arreglo dimanico pero en una sola lineaDelete
//Francys System //uso del delete delete verduras; //para eliminar arregloas int *calificaciones; calificaciones = nrw int[10]; delete[] calificaciones;
Ejemplo funcional
#include <iostream> #include <conio.h> using namespace std; int main() { int *c; int numero; cout<< "Ingresa el numero de calificaciones : : " <<endl; cin>>numero; c = new int[numero]; for(int i=0;i < numero ; i++) { cout<< "Ingresa la calificacion : : " <<endl; cin>>c[i]; } cout<< "Calificacion de las materias"<<endl; for(int i=0;i < numero ; i++) { cout<< " calificaciones : : " << c[i]<<endl; } delete[]c; getch(); }
0 comentarios: