Нет утечки памяти.Класс QString
управляет собственной памятью (при условии, что вы говорите об этом QString
.
Вы создаете временный объект этого класса, который уничтожается при вызове foo::bar
возвращает. В этот момент деструктор запускается, освобождая любую память, удерживаемую классом QString
.
В общем, пока ваши ресурсы управляются классами, а вы не выделяете их с помощью new
, вам не нужно беспокоиться об освобождении ресурсов, так как деструктор будет запускаться, когда экземпляр класса выходит из области видимости.
Когда вы используете new
или используете ресурс, время жизни которого не управляетсяклассом (например, память, возвращаемая malloc
или файлом, возвращаемым fopen
(в отличие от fstream
, который является классом и очищается при его уничтожении)), именно тогда вам нужно обязательно очистить
Между прочим, лучший способ сделать это - обернуть такие ресурсы в класс, который управляет временем жизни ресурса через конструктор и деструктор, а затем использовать этот класс вместо этого.«сырого» ресурса;это называется шаблоном Resource Acquisition Is Initialization .