Quick Tips: Diferença entre o Free, FreeAndNil e Release

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (7)  (0)

Veja nesta Quick a diferença entre o Free, FreeAndNil e Release


 

Olá pessoal, neste artigo estaremos vendo a diferença entre o Free, freeandNil e Release. Segue os exemplos desenvolvidos em Delphi 2010, porém nada impede ser serem utilizados em outras versões pois não existe nenhum comando novo, são comandos nativos desde que o Delphi surgiu.

 

Veremos agora um por um inicialmente falaremos do Free, vejam abaixo :

 

Free : O free é usado quando se quer liberar um objeto da memória, um form por exemplo. Reparem o exemplo abaixo:

 

Exemplo prático 01:

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  FrmCliente := TFrmCliente.Create(Self);

  with FrmCliente do

  begin

   try

     ShowModal

   finally

    Free;

   end;

end;

end;

Muita gente ainda não utiliza o with, porém em pequenas partes de código, não há nenhum contratempo, e ainda economiza na declaração da variável para este Form.

 

Freeandnil : O Freeandnil é uma procedure que atribui nil a uma variável de instância seguida do free citado acima. Só e interessante ser usado quando você precisa verificar se um objeto foi criado usando o assigned. Se o free for chamado sozinho, a memória será liberada da mesma forma.

 

Exemplo prático 02:

 

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  FrmCliente := TFrmCliente.Create(Self);

  with FrmCliente do

  begin

   try

    ShowModal

   finally

    FreeAndNil(FrmCliente);

   end;

  end;

end;

 

Release : Só utilizamos o release quando lidamos com  forms, pois ele pertence a classe TCustomForm. Usamos o Release quando queremos liberar um form dentro de outro. Um bom exemplo é no evento Onclick de um botão do form que está sendo utilizado no momento. Este Release leva uma menssagem para o form e quando é executada  chama o método free. A diferença do Release é que ele executa as menssagens e eventos que estiverem em fila daquele from antes de ser destruído e dispara um free pelo form.  

Utilizar o Release fora de um form também acarreta neste resultado, só que não é muito eficiente, pois a menssagem é enviada para o form e depois chama o método free.

 

 

Exemplo prático 03:

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  FrmCliente := TFrmCliente.Create(Self);

  with FrmCliente do

  begin

   try

     ShowModal

   finally

     Release;

   end;

  end;

end;

 

Fico aqui com mais este artigo, um abraço e até a próxima.

 

Daniel Pereira

 

Danielsantos1984@gmail.com

 

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?