Memory Leaks - detectando

<< Click to Display Table of Contents >>

Navigation:  Novatos > Mais Dicas Programação Delphi >

Memory Leaks - detectando

Previous pageReturn to chapter overviewNext page

Definição

Memory Leak = vazamento de memória

Ocorre quando criamos um objeto e não damos free. Isto vai consumindo memória do Windows e, dependendo do caso, pode deixar o programa lento e travar.

Como saber 

Como saber se eu fui bastante inteligente de ter criado um objeto e esquecido de dar free?

Delphi 2006 é a solução para seus problemas!

Simplesmente no create do form principal adicione a linha:

  ReportMemoryLeaksOnShutdown := True;

 

Que ao fechar o programa, se algum objeto vazou a memória será exibido um ShowMessage com informações sobre isso.

Exemplo

Para testar crie um novo projeto com um form + button. Vamos simular um vazamento de memória, criaremos um TStringList mas não daremos free.

procedure TForm1.Button1Click(Sender: TObject);

var

  L: TStringList;

begin

  L:= TStringList.Create;

end;

 

Se rodarmos o projeto e clicarmos no botão, nada acontece ao fechar o form.

Agora adicione a seguinte linha ao projeto e repita o processo:
 

  ReportMemoryLeaksOnShutdown := True;

 

Ao fechar o form é exibida uma ShowMessage com as seguintes informações:

 

Unexpected Memory Leak

An unexpected memory leak has occurred. The unexpected small block

leaks are:

53 - 60 bytes: TStringList x 1

 

Percebeu? ele indica que o problema é um StringList. (1 unidade). Fazendo isso conseguiremos fazer programas perfeitos e sem bugs

(hahahah).