Ver Mensaje Individual
  #11 (permalink)  
Antiguo 19/04/2006, 03:23
Avatar de carlosrdelmoral
carlosrdelmoral
 
Fecha de Ingreso: agosto-2004
Mensajes: 149
Antigüedad: 20 años, 4 meses
Puntos: 0
Cita:
Iniciado por fibergran
Wenas de nuevo

Estoy haciendo un programilla con c++ y al ejecutar sale todo bien, exceptuando un mensaje de error al final:

*** glibc detected *** double free or corruption (!prev): 0x0804b008 ***
Abortado


el caso es que el compilador inserta un destructor al terminar el main

aki pongo el constructor y el destructor:

int_set_100::int_set_100(){
cursize = 0;
members = new int [50];
maxsize = 50;
}

int_set_100::~int_set_100 () {
delete [] members;
}


con este código me sale el error

*** glibc detected *** double free or corruption (!prev): 0x0804b008 ***
Abortado


pero si quito el delete ya no hay error y el programa va de maravilla, el problema es que si no pongo el delete no libero la memoria, cosa que estoy empeñado en hacer.

Si alguien me puede echar una mano, un cable o lo que sea
agradecido le stoy.

Merci de antemano

Por cierto la versión de linux es la suse 10.0

Yo hace años que no toco el c++ ,pero se me paso algo por la cabeza , aunque no me he molestado en probarlo e igual el compilador no lo traga, se trata de decirle el tipo de array que vas a borrar para que la memoria que eliminas tenga el tamaño adecuado mediante un cast.

delete [] (int) members;

Ora cosa es revisar que tengas como propiedad declarado como array entero a a member antes de instanciarlo.

Pero no me hagas mucho caso , ya son años que no toco los objetos..

Pruebalo igual te va.

Saludos,
__________________
Webmasters