Notificación de fuga de memoria en Delphi al salir del programa

Todas las versiones de Delphi desde Delphi 2006 tienen un administrador de memoria actualizado que es más rápido y tiene más funciones.

Una de las mejores características del "nuevo" administrador de memoria permite a las aplicaciones registrar (y anular el registro) las pérdidas de memoria esperadas, y opcionalmente informar pérdidas de memoria inesperadas al cerrar el programa.

Al crear aplicaciones WIN32 con Delphi, es imprescindible asegurarse de liberar todos los objetos (memoria) que cree dinámicamente.

Se produce una pérdida de memoria (o recurso) cuando el programa pierde la capacidad de liberar la memoria que consume.

Informar pérdidas de memoria al apagar

La detección y el informe de pérdidas de memoria están configurados en falso de forma predeterminada. Para habilitarlo, debe establecer la variable global ReportMemoryLeaksOnShutdown en TRUE.

Cuando se cierra la aplicación, si hay pérdidas de memoria inesperadas, la aplicación mostrará el cuadro de diálogo "Fuga de memoria inesperada".

El mejor lugar para ReportMemoryLeaksOnShutdown sería en el archivo de código fuente (dpr) del programa.

 empezar   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // fuente "por" Delphi   Aplicación. Inicializar; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Aplicación Ejecutar; final. 

Nota: una variable global DebugHook se usa arriba para asegurarse de que se muestren pérdidas de memoria cuando la aplicación se ejecuta en modo de depuración, cuando se ajusta a F9 desde el IDE de Delphi.

Prueba de manejo: detección de fugas de memoria

Con ReportMemoryLeaksOnShutdown establecido en TRUE, agregue el siguiente código en el controlador de eventos OnCreate del formulario principal.

 var   sl: TStringList; empezar   sl: = TStringList.Create; sl.Add ('¡Pérdida de memoria!'); final; 

Ejecute la aplicación en modo de depuración, salga de la aplicación; debería ver el cuadro de diálogo de pérdida de memoria.

Nota: Si está buscando una herramienta para detectar los errores de su aplicación Delphi, como daños en la memoria, fugas de memoria, errores de asignación de memoria, errores de inicialización variable, conflictos de definición variable, errores de puntero ... eche un vistazo a madExcept y EurekaLog

Delphi Tips Navigator

  • Consultas SQL de fecha y hora: Formato de valores de fecha y hora para Access SQL en Delphi
  • Forzar el modo de edición de TListView usando un atajo de teclado