Gerenciamento do Tempo de Vida de Objetos

No Delphi, existem vários níveis de gerenciamento de tempo de vida de objetos.

O Delphi cuida dos objetos em tempo de projeto como components e controls em um form. Ele também irá liberar automaticamente qualquer form auto-criado.

No entanto, qualquer objeto dinâmico criado em código é responsabilidade do desenvolvedor. Se estiver usando interfaces com reference counting, não é necessário liberar explicitamente as variáveis. Mas o desenvolvedor será responsável por liberar qualquer outra variável. Se o desenvolvedor não descartar essas variáveis, isso criará memory leaks que podem esgotar a memória do server e travar a aplicação com o tempo.

Uma sintaxe típica para criar objetos dinâmicos com vida curta é criá-los e descartá-los em um bloco try..finally.

Exemplo Delphi
F := TFileStream.Create('NewFile.bin', fmCreate);

try
  F.Write(Buffer, 1024)
finally
  F.Free; // dispose object when it is done
end;

O objeto file stream será liberado quando o bloco try..finally for executado. Esse princípio deve ser seguido ao criar objetos dinâmicos com vida curta.