Hola... yo siempre uso el metodo 3, pero asegurando mas el finally
Código:
var
A1, A2: TTest;
begin
A2 := nil;
A1 := nil;
try
A1 := TTest.Create;
A2 := TTest.Create;
//Use A1 and A2
finally
if Assigned(A2) then FreeAndNil(A2);
if Assigned(A1) then FreeAndNil(A1);
end;
end