Да, если вы храните указатель на объект откуда-то еще и сохраняете его, вы всегда должны копировать или сохранять его. Сохранение предпочтительнее, если вы не хотите изменять его, потому что оно не выделяет дополнительную память и работает быстрее.
На ваш вопрос о том, когда будет освобождена строка, единственный возможный ответ: через некоторое время после того, как ваша функция вернулась.
Во многих книгах вы можете прочитать, что это произойдет, когда будет обработано следующее событие GUI, но это не точно. В последовательности вызова функций каждая функция может открывать и закрывать свой пул автоматического выпуска.
Если функция выполняет большую часть работы, она может просто создать свой пул автоматического выпуска и освободить зарегистрированные объекты автоматического выпуска в любое время.