Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SrCooper en 27 Enero 2014, 00:08 am



Título: Algunos problemas de memoria con SFML 2.1
Publicado por: SrCooper en 27 Enero 2014, 00:08 am
Buenos días a todos, estoy realizando un proyecto con SFML (en su versión 2.1) y llegados a un determinado punto me vi obligado a usar los sound buffers para la correcta reproducción de sonidos.

Funciona todo perfecto (los sonidos se cargan y suenan sin ningún problema), pero el compilador me tira un segmentation fault al llegar al final de la ejecución del programa. Ni siquiera es apreciable para el usuario que vaya a ejecutarlo, pero no me gustaría que tenga ningún problema de memoria cuando este terminado.

Probé a compilar estáticamente y el error ya no ocurre, sin embargo el programa consume mucha más memoria y esto es algo que tampoco quiero.

Mi pregunta es básicamente si alguien ha tenido alguna vez estos problemas de memoria al usar los sonidos en SFML y ya de paso me gustaría que me aclararan por qué la versión estática del programa consume más memoria y más cpu que la versión dinámica.

Un saludo y muchas gracias de antemano


Título: Re: Algunos problemas de memoria con SFML 2.1
Publicado por: engel lex en 27 Enero 2014, 06:08 am
posiblemente el error es porque no liberaste la memoria al final o lo hiciste mal, revisa eso (ese error recuerda que por lo general es que accediste a una zona de memoria a la cual no tenias permiso)

lo de la versión estática es básicamente porque el carga todo a RAM y ahí lo corre, en dinámica es porque el solo llama al DLL cuando lo necesita y listo, eso hasta donde tengo entendido


Título: Re: Algunos problemas de memoria con SFML 2.1
Publicado por: BlackM4ster en 27 Enero 2014, 08:35 am
A mi me pasaba, pero no con los sonidos exclusivamente, sino que había algunos proyectos que fallaban. Aun no sé por que .___.


Título: Re: Algunos problemas de memoria con SFML 2.1
Publicado por: SrCooper en 27 Enero 2014, 15:44 pm
posiblemente el error es porque no liberaste la memoria al final o lo hiciste mal, revisa eso (ese error recuerda que por lo general es que accediste a una zona de memoria a la cual no tenias permiso)

lo de la versión estática es básicamente porque el carga todo a RAM y ahí lo corre, en dinámica es porque el solo llama al DLL cuando lo necesita y listo, eso hasta donde tengo entendido

Estoy seguro de que esa no es la razón, porque estoy cargandolos y manejandolos igual que  las texturas y estas no generan ningún problema (además estoy usando punteros inteligentes, por lo que dudo mucho que sea eso)

Un saludo y gracias por todo


Título: Re: Algunos problemas de memoria con SFML 2.1
Publicado por: SrCooper en 9 Febrero 2014, 17:46 pm
Bueno, tras una larga travesía, he solucionado el error.

Lo localicé como un error con el destructor del sistema de audio y de openal32.dll. Así que recompilé SFML por mi cuenta y después descargué el OpenAL soft desde este enlace:

http://kcat.strangesoft.net/openal.html#download

Lo renombré como openal32.dll, lo puse en la carpeta de mi ejecutable y ¡Voilà! ya no se produce ningún error.

De todas maneras he descubierto que este es un bug muy conocido de SFML y que se está trabajando duramente para solucionarlo definitivamente (esta es una solución provisional, por decirlo así).

Sinceramente no sé muy bien qué he hecho, o si solo me funciona a mí. Agradecería que alguien me aclarara esto.

Un saludo


Título: Re: Algunos problemas de memoria con SFML 2.1
Publicado por: BlackM4ster en 10 Febrero 2014, 08:18 am
Ya voy a probar y te comento si me funciona. Gracias de todas formas  ;-)