Sorry, it's my mistake. I forgot the "var": (inline declaration with type inference)
begin
var sl := New.Of(TStringList.Create);
sl.Add("One");
sl.Add("Two");
//here the record "New" goes out of scope, runs the it's destructor which will free the instance on which "sl" points to
end;
Better: with inline declaration will stay alive until the block end, not until routine end.