Я довольно новичок со строками C ++, поэтому следующий шаблон может быть немного беспорядочным. Я рассматриваю некоторый код, который написал перед началом интеграционного тестирования с более крупной системой. То, что я хотел бы знать, является ли это безопасным, или если это будет склонно к потере памяти?
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, но я стараюсь быть немного более понятным в своем коде (и меньше полагаться на стиль функции побочного эффекта).