PDA

Ver la Versión Completa : Problemas con el manejo de la RAM


SoulSoldier
15-09-2005, 21:15:20
Buenas tardes. Tengo un problema con el manejo de la RAM. Estoy consciente de que el manejo de memoria dinámica dentro de C++ debe ser liberado igualmente por el programador, pero no encuentro el punto de mi programa donde se realiza el incremento de memoria. Lo que me preocupa es que el manejo de archivos se hace de manera constante, además de manejar los puertos. Cada 4 Segundos se deben escribir 30 archivos diferentes y escribir en el puerto serial. El incremento de memoria se hace crítico al pasar el tiempo, y dado que en el programa se implementa un sistema de monitoreo industrial, el programa debe estar corriendo constantemente, tal vez por días. Uno de los síntomas de incremento de memoria se presenta cuando consulto los archivos tipo CVS desde el programa, con el componente TAdvColumnGrid (externo), el programa incrementa su consumo de memoria como es normal, pero al cerrar el Formulario donde esta alojada la tabla, no se baja el uso de memoria, como es de esperarse. Mi duda radica en si es necesario manejar también el manejo de memoria para todos los componentes, o si ellos lo hacen automáticamente. ¿Cómo puedo optimizar mi programa en consumo de memoria, si este tiene que acceder a modificar archivos cada vez más grandes?

Crandel
16-09-2005, 00:56:00
El manejo de memoria lo debes hacer vos dependiendo de cada caso. Por ejemplo:
* si es un componente que pusiste en el formulario, el dueño es el formulario y el se encarga de crearlo y destruirlo.
* si creaste un componente dinamicamente y le diste como padre al formulario, tambien el lo destruye.
* si creaste un componente dinamicamente y no le diste padre, vos sos el encargado de destruirlo.
* Si creaste alguna clase (que no sea componente) u otra estructura de datos dinamicamente, vos sos el responsable de destruirlo.

En todos los casos , sos vos el que debe saber que es lo que estas haciendo.

Solo viendo el código fuente se puede saber donde es el lugar donde no estas liberando la memoria.