Cita de: Alien-Z en 17 Septiembre 2013, 19:03 PM
¿Tu aplicación hace uso de recursos externos?, una base de datos, conexión a un servidor, etc.
Si dices que liberas toda la memoria reservada puede que el despordamiento se deba a que cargas información de otro lado y no lo estás controlando.
Efectivamente, estoy conectado a un servidor y estoy leyendo memorias propias del software que estoy utilizando (que había creado previamente en otro código anterior, también con memorias dinámicas).
Perdonad que no publique mi código, pero básicamente consta de un preproceso que es un algoritmo de asignación de datos (cada celda en que se divide mi dominio debe buscar otra celda que cumpla una cierta condición). La información la guardo en una memoria propia del programa para después visualizarla. Este código no da problemas porque sólo se ejecuta una vez (pero libero memorias igualmente).
Después, el problema aparece en el postproceso que se repetirá cientos de veces: Me voy quedando sin memoria paulatinamente. Lo que hago es releer las memorias propias de mi programa, y crear matrices dinámicas en las que almaceno los datos de esta memoria, y finalmente, las libero(si no me he equivocado).
Para empezar, como se ha sugerido, voy a crear mensajes en mi código para asegurame que estoy liberando memoria correctamente (ya había creado mensajes que devuelven un error si el malloc ha fracasado).
Teniendo en cuenta que mi código se ejecutará muchas veces, ¿me recomendáis que sustituya mis malloc por calloc?
Gracias de nuevo, un saludo.