main()
point1 = &index;
point1 = new int;
delete point1;
float *float_point1, *float_point2 = new float;
char *c_point;
c_point = new char;
# include <iostream.h>
{
int index, *point1, *point2;
*point1 = 77;
point2 = new int;
*point2 = 173;
cout <<"Los valores son "
<< index <<" " << *point1 << " "<<
*point2 <<'\n';
point2 = point1;
*point1 = 999;
cout <<"Los valores son "
<< index <<" " << *point1 << " "<<
*point2 <<'\n';
float_point1 = new float;
*float_point2 = 3.14159;
*float_point1 = 2.4 * (*float_point2);
delete float_point2;
delete float_point1;
delete c_point;
c_point = new char [sizeof(int) + 133];
delete c_point;
}
Resultado de la ejecución:
Los valores son 77 77 173
Los valores son 77 999 999
new int
significa que se crea un nuevo entero en la memoria, y devuelve la
localización del entero creado. Esta localización es asignada a point2. La
siguiente línea asigna 173 al entero al que apunta point2. Es importante distinguir entre
point2, la localización del entero, y *point2, el entero. El puntero
point2 apunta ahora a una variable entera que se ha reservado
dinámicamente, y que puede utilizarse de igual forma que se hacía en C. Como ejemplo,
se imprime el valor al que apunta.
cout
inmediatamente después de utilizar delete,
veremos que todavía se conservan los valores. Si la repetimos de nuevo antes de dejar el
programa, cuando el espacio que ocupaban debe haber sido sobreescrito, veremos que ya no es
así. Incluso aunque el compilador nos dé los números correctos, no es una buena
práctica pensar que esos datos están ahí todavía, porque en un programa
dinámico largo la memoria se usará continuadamente.
int *intvector;
intvector = new int [20];
y se libera:
delete [] intvector;
Comentarios, sugerencias, ideas...
© Beatriz Fuentes Arenaz, 1996-1997