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
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
A mi me pasaba, pero no con los sonidos exclusivamente, sino que había algunos proyectos que fallaban. Aun no sé por que .___.
Cita de: engelx 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
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
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
Ya voy a probar y te comento si me funciona. Gracias de todas formas ;-)