Memory Leak: Nos controles de formulário


O Vazamento de Memória ocorre quando uma determinada rotina não é liberada, este erro pode ocasionar um mal funcionamento na aplicação, com o ReportMemoryLeaksOnShutdown logo após o comando Application.Initialize conseguimos ativar o recurso de mapeará os vazamentos de memória. Esta é uma variável global só precisando ser declarada uma unica vez.

program Sistema;

uses
  Vcl.Forms,
  USistema in 'USistema.pas' {FSistema};
{$R *.res}

begin
  Application.Initialize;
  ReportMemoryLeaksOnShutdown := (DebugHook <> 0);
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

ReportMemoryLeaksOnShutdown e DebugHook estão localizados na unit System. A variável DebugHook é igual a 0 quando o Delphi esta sendo executando, assim não vai ao cliente. Em seguida no evendo OnCreate do TFSistema, crie duas TStringList e em seguida execute a aplicação, veja o código abaixo:

procedure TFSistema.FormCreate(Sender: TObject);
var
  wTeste, wTeste02: TStringList;
begin
  wTeste := TStringList.Create;
  wTeste.Add('Teste');

  wTeste02 := TStringList.Create;
  wTeste02.Add('Teste 02');
end;
Quando finalizar a aplicação, ira aparecer a massagem de vazamento com o ocorrido: TStringList x 2.
Claro você pode utilizar o CNWizards(conhecido também como CNPack), que é um excelente conjunto de bibliotecas e add-ins para o delphi. Ou você pode usar o FastMM4.
  • http://www.cnpack.org/
  • http://sourceforge.net/projects/fastmm/

0 comentários:

Postar um comentário