Título: MEMORIA SIN LIBERAR C++ Publicado por: guero en 6 Julio 2020, 05:31 am Hola, tengo una consulta. Hay alguna manera para mostrar por pantalla al usuario que NO quedó memoria sin liberar? Existe una exception de este tipo? Estuve buscando en internet y no encontré nada de eso.
Gracias! Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: K-YreX en 6 Julio 2020, 05:44 am Existen opciones como valgrind (para Linux) que te permiten ejecutar un programa y al finalizar te muestra información entre la que se encuentra la cantidad de memoria sin liberar o los errores que se hayan producido durante la ejecución.
Con esto puedes probar tu programa y ver que no queda memoria sin liberar antes de su finalización. Pero obviamente estas herramientas no están destinadas a ser usadas por el usuario final sino por el desarrollador. Debes ser tú quien pruebe tus programas con alguna herramienta del estilo para ver que no queda memoria sin liberar. Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: guero en 6 Julio 2020, 05:50 am Gracias por responder!
Claro, conozco Valgrind pero mi idea era (para un trabajo de la escuela) poder mostrarle con un throw que confirme que se liberó toda la memoria. Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: Meta en 6 Julio 2020, 16:47 pm ¿Cómo puedes saber que no se liberó memoria y cuando se se liberó?
Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: K-YreX en 6 Julio 2020, 21:04 pm Gracias por responder! Desconozco si existe alguna manera de mostrar eso tal y como quieres pero la verdad me extraña que exista. Al final al que le importa que se libere la memoria no es al usuario sino al desarrollador y éste último tiene a su alcance herramientas externas para comprobar que la memoria está liberada ante cualquier finalización del programa.Claro, conozco Valgrind pero mi idea era (para un trabajo de la escuela) poder mostrarle con un throw que confirme que se liberó toda la memoria. ¿Cómo puedes saber que no se liberó memoria y cuando se se liberó? Cuando se habla de liberar memoria se hace referencia a la que se reserva de manera dinámica usando funciones como: malloc()/realloc()/calloc() (en C) o new() (en C++). Esta memoria tiene que ser liberada de forma manual con: free() (en C) o delete() (en C++).Por ejemplo puedes usar herramientas como valgrind (en Linux) y ejecutar: Código: $ gcc free_memory.c -o free_memory Código: ==11393== Command: ./free_memory La salida del mismo programa liberando la memoria dinámica con free(): Código: ==11457== HEAP SUMMARY: Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: Loretz en 7 Julio 2020, 07:22 am Una forma muy usada, en particular por MFC de Microsoft es el Debug_new donde se usan macros para detectar memory leaks, del tipo
#define DEBUG_NEW new(__FILE__, __LINE__) #define new DEBUG_NEW El artículo original, con todas las explicaciones, y el link de descarga de debug_new.h que implementa esta técnica está en http://wyw.dcweb.cn/leakage.htm Título: Re: MEMORIA SIN LIBERAR C++ Publicado por: Meta en 7 Julio 2020, 14:41 pm Gracias por la explicación muy desarrollada. ;-)
|