Senhores,
Depois de 10 anos programando com Delphi, veio uma dúvida: Como o
Delphi gerencia os objetos que são criados nas exceções? Em outras
palavras, alguém sabe como ele libera o objeto da memória? Tem algum
problema, para o compilador, se eu repassar o objeto criado a vários
métodos a frente?

Vou dar um exemplo:

var
  I: Integer;
  X: Real;
begin
  try
    I := 10;
    X := I / 0;
    ShowMessage(FloatToStr(X));
  except
    on E: EZeroDivide do
    begin
      Application.ShowException(E);
      OutroMetodo(E);
    end;
  end;
end;

Se não existisse o método "OutroMetodo", eu posso utilizar a variável
"E" para exibir uma mensagem e o Delphi se encarrega de desalocar a
memória, certo?
Mas se eu propagar este objeto para uma outra rotina, o Delphi tb irá
fazer a liberação de memória, como?

--
Marcos Douglas

Responder a