Algunos problemas de memoria con SFML 2.1

Iniciado por SrCooper, 27 Enero 2014, 00:08 AM

0 Miembros y 1 Visitante están viendo este tema.

SrCooper

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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

BlackM4ster

A mi me pasaba, pero no con los sonidos exclusivamente, sino que había algunos proyectos que fallaban. Aun no sé por que .___.
- Pásate por mi web -
https://codeisc.com

SrCooper

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

SrCooper

#4
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

BlackM4ster

Ya voy a probar y te comento si me funciona. Gracias de todas formas  ;-)
- Pásate por mi web -
https://codeisc.com