El siguiente programa, le pregunta al usuario que indique la

Anuncio
El siguiente programa, le pregunta al usuario que indique la cantidad de memoria que se
requerirá y luego dinámicamente se solicita esa cantidad de memoria:
#include <iostream.h>
void main(void)
{
int size;
char *pointer;
cout << "Introduce el tamaño del arreglo hsta 30000: ";
cin >> size;
if (size <= 30000)
{
pointer = new char[size];
if (pointer != NULL)
cout << "Memoria asignada" << endl;
else
cout << "No se pudo asignar memoria" << endl;
}
}
El siguiente programa, demanda memoria para 10,000 caracteres en repetidas ocasiones
hasta que new no puede obtener mas memoria del almacenamiento libre. Cuando el
programa tiene éxito despliega un mensaje y otro cuando falla al pretender obtener la
memoria:
#include <iostream.h>
void main(void)
{
char *pointer;
do {
pointer = new char[10000];
if (pointer != NULL)
cout << "Allocated 10,000 bytes" << endl;
else
cout << "Memory allocation failed" << endl;
} while (pointer != NULL);
}
El siguiente programa, demanda memoria para almacenar un arreglo de 1,000 enteros.
Luego el programa asigna los números del 1 al 1,000 al arreglo desplegando los valores en
la pantalla. Luego, el programa libera la memoria y demanda 2,000 lugares para un arreglo
de números de punto flotante, asignando los números del 1.0 al 2000.0, como se muestra a
continuación:
#include <iostream.h>
void main(void)
{
int *int_array = new int[1000];
float *float_array;
int i;
if (int_array != NULL)
{
for (i = 0; i < 1000; i++)
int_array[i] = i + 1;
for (i = 0; i < 1000; i++)
cout << int_array[i] << ' ';
delete int_array;
}
float_array = new float[2000];
if (float_array != NULL)
{
for (i = 0; i < 2000; i++)
float_array[i] = (i + 1) * 1.0;
for (i = 0; i < 2000; i++)
cout << float_array[i] << ' ';
delete float_array;
}
}
los operadores new y delete son propios de C++. En C se usan las funciones malloc y
free para reservar y liberar memoria dinámica.
Veamos algunos ejemplos:
int main() {
char *c;
int *i = NULL;
float **f;
int n;
c = new char[123]; // Cadena de 122 caracteres
f = new float *[10]; // Array de 10 punteros a float (1)
// Cada elemento del array es un array de 10 float
for(n = 0; n < 10; n++) f[n] = new float[10]; (2)
// f es un array de 10*10
f[0][0] = 10.32;
f[9][9] = 21.39;
c[0] = 'a';
c[1] = 0;
// liberar memoria dinámica
for(n = 0; n < 10; n++) delete[] f[n];
delete[] f;
delete[] c;
delete i;
return 0;
}
Descargar