[Programación] liberar reserva
HHDG
programacion@lugro.org.ar
Mon, 22 Nov 2004 21:20:22 -0300
Quería reservar espacios en una función...pero liberarlos desde otra...
este es un ejemplo de lo que quería hacer..
#include<stdio.h>
class cosas
{public:
int *vector;
cosas (void)
{}
~cosas(void)
{delete[] vector;}
};
//------------------------
//Después un main con
//------------------------
int main (void)
{int *reserva=new int[2000];
cosas *algo=new cosas();
algo->vector=reserva;
algo->vector[999]=55;
printf("+%d",algo->vector[999]);
delete algo;
cosas *otra=new cosas();
printf("-%d",reserva[999]);
delete otra;
return 0;
}
Ese programa escribe
+55-55
pero esto no me dá mucha información ya que aún si el espacio
de "reserva" hubiera sido liberado, el 55 puede permanecer ahí
tranquilamente, pero como sospecho que no funcionó, osea
que no pude liberar la reserva desde el destructor..
hice otro ejemplo, y este trajo algún misterio, o un descubrimiento
de bug.
#include<stdio.h>
int main (void)
{
int *b=new int[3];
int *a;
a=b;
a[0]=1;
a[1]=2;
printf("-%d-%d",*a,*(a+1));
delete[] a;
int *c=new int[3];
c[0]=3;
c[1]=4;
printf("-%d-%d",*b,*(b+1));
return 0;
}
Compilando con Borland para DOS obtuve
-1-2-3-4
como si hubiera liberado la memoria!!!
con MinGw en Windows obtuve
-1-2-1-2
Parece que aqui no ha liberado... :(
con g++ en Linux
-1-2-3-4
Tambien parece que ha liberado la memoria!!!
What CARAJO is going on?
Gracias por leer