Если функция получает ссылку, то не она управляет ее временем жизни. Когда функция получила объект не по ссылке, она им владеет и больше ни кто не имеет к нему доступа пока функция его не вернет ли куда-либо передаст. Если функция его не вернула и ни куда не сохранила, занятая объектом память освобождается при завершении функции.