Hola,
Si no estoy equivocado, y, tal como planteas el asunto, la variable sería liberada al salir del procedimiento, puesto que se trata de una variable local que no tiene vida más allá del mismo. Sin embargo, lo normal es liberar aquellos recursos que ocupemos, e incluso ir más allá, es decir, asegurarnos de que los liberamos, por ejemplo:
Código Delphi
[-]
procedure Foo();
var
t: TStrings;
begin
t := TStringList.Create();
try
finally
t.Free();
end;
end;
De este modo, aun en caso de excepción, nos aseguramos de que la variable "t" es creada, usada y liberada antes de salir del procedimiento.