Ref

При управлении объектами Tcl (и конечно-же библотека ATcl) исползует подсчёт ссылок и концпепцию copy-on-write.

int Ref(Tcl_Obj);
int Unref(Tcl_Obj);
bool Shared(Tcl_Obj);

Объекты создаваемые в методах Obj имеют нулевой счётчик ссылок, а получаемые в методах Result могут иметь произвольный счётчик ссылок. Метод Ref() увеличивает кол-во ссылок на объект, а метод Unref() уменьшает счётчик. Если при Unref счётчик будет обнулён, то объект быдет автоматически удалён. До любого использования объекта рекомендуется вызывать метод Ref к нему, а после завершения использвать Unref.

Методы Eval,Call используют такую методику и поэтому временные объекты переданные в аргументах будут удалены после завершения этих методов.

Получение строки из объекта (методы String) не манипулует счётчиком ссылок и не удаляют временных объектов.

В целях отладки вы можете проверить счётчик ссылок используя Shared - он вернёт true если счётчик больше 1, то есть объект «разделен» то есть ссылки на него используются в нескольких местах и объект не может быть изменнён.