SDL_Surface (error violacion acceso en memoria)

Consulte acerca de programas, técnicas, algoritmos etc.

SDL_Surface (error violacion acceso en memoria)

Notapor setupybios » Mar Nov 06, 2012 7:13 pm

Hola amigos, Tengo un inconveniente en SDL con el metdo SDL_FreeSurface que libera las imagenes cargdas, estoy trabajando con visual Studio y m tira un error de acceso invalido en memoria(adjunto imagen de error) les cuento que creo un array d Sprites que tienen un metodo finalize q llama a SDL_FreeSurface, he mirado paso a paso como envia cada uno d los elementos del array y lo hace correctamente pero igual me tira el error en ese metodo de SDL. a ver si me pueden tirar un salvavidas y sino voy a tener que dejar sin liberar la memoria jeje, que no creo que sea lo mejor. Saludos y desde ya muchas gracias( adjunto el codigo)

Metodo de la clase CSprite q libera la imagen:

void CSprite::finalize()
{
for (int i = 0; i < cont; i++)
sprite[i].unload(); //El sprite puede tener varios frames cargados por eso es el for

}

Metodo que llama a SDL_FreeSurface: (De otra clase frame que guarda la imagen)

void CFrame::unload()
{
SDL_FreeSurface(img); //img es del tipo SDL_Surface y es quien almacena la imagen
}

Este es el codigo para finalizar los sprites:
for (int i = 0; i < 5; i++)
menu[i].finalize(); //menu es del tipo CSprite
setupybios
 
Mensajes: 1
Registrado: Mar Nov 06, 2012 7:01 pm

Re: SDL_Surface (error violacion acceso en memoria)

Notapor Barajas » Mié Nov 07, 2012 8:36 am

Bien, por lo que leo, parece que no hay ningún error obvio. Bueno, sdl_freesurface no recibe como argumento un apuntador a SDL_Surface, pero no creo que este sea el error, (pero no esta de más hacer una prueba con SDL_FreeSurface(&img); -notase el ampersand para trasformar a puntero -).

O podrías intentar crear un método publico que te de la imagen, ejemplo:

//asumimos que imagen es privado y que es del tipo SDL_Surface *
class CFrame{
private:
SDL_Surface *image;
/*todo el código restante de la clase aquí...*/
}

SDL_Surface* CFrame::GetIma(void)
{
return this->image;
}
void CFrame::unload()
{
SDL_FreeSurface(this->GetIma());
}
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: SDL_Surface (error violacion acceso en memoria)

Notapor shackra » Dom Nov 11, 2012 6:27 pm

"python"! xd
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron