Я новичок в С++-строках, поэтому следующий шаблон может быть немного уродливым. Я просматриваю код, который я написал, прежде чем начинать интеграционное тестирование с помощью более крупной системы. Что я хотел бы знать, если это безопасно или если он будет подвержен утечке памяти?
string somefunc( void ) {
string returnString;
returnString.assign( "A string" );
return returnString;
}
void anotherfunc( void ) {
string myString;
myString.assign( somefunc() );
// ...
return;
}
Я понимаю, что значение returnString присваивается новому объекту myString, а затем объект returnString уничтожается как часть разрешения вызова somefunc. В какой-то момент в будущем, когда myString выходит из сферы действия, он тоже уничтожается.
Я бы обычно передавал указатель на myString в somefunc() и напрямую присваивался значения myString, но я стараюсь быть немного более ясным в своем коде (и меньше полагаюсь на стиль функции побочных эффектов).