2009/2/26 Joao Morais <jcmorai...@gmail.com>
> > Mas se eu propagar este objeto para uma outra rotina, o Delphi tb irá
> > fazer a liberação de memória, como?
>
> Você pode propagar quanto quiser, contanto que não utilize o objeto
> quando ele sair de contexto (ou seja, final do bloco except). Se
> precisar dos dados, clone-o ou copie dele o que for relevante.
>
> --
> Joao Morais

Olá João, eu sabia que vc responderia!
Então, "como" o compilador desaloca a memória é uma incógnita, certo?
Apenas sabemos que ele faz (deve ter um E.Free antes do "end" do
"except" ou qq coisa parecida).
Bem, isso eu também sabia. Minha dúvida (não sei porque tive essa
dúvida depois de tanto tempo) é justamente poder ou não propagar
(passar como parâmetro) o objeto E (a variável de Exceção) para uma
outra rotina. Se o compilador, digamos, "adiciona" um E.Free antes de
sair do bloco try/except/end, então teria que dar erro se eu
utilizasse o objeto fora deste contexto, mas isso não acontece.
Tem alguma idéia sobre isso?

--
Marcos Douglas

Responder a