В целом это очень плохо идея - по двум причинам:
Вторичный причина: Вы используете ручную выделение кучи без упаковки его в смарт-указатель. Но добавление, например, std::unique_ptr
просто помещал бы бандаж на симптомы.
Основная причина: вы думаете в правильном направлении (избегайте ненужных копий больших сумм данных), но вы используете неправильный инструмент. Тип параметра функции - это правильный инструмент.
Нужно ли только функции читать строку? Затем его подпись должна быть:
return_type anyfunction(const std::string& test);
Передача const ref не будет копировать строку. Если вам нужно написать-доступ, а также, оставить из const
:
return_type anyfunction(std::string& test);
Опять же, ни одна копия не делается. Перемещение строки в функцию также может быть опцией. Но трудно сказать без дальнейшего контекста.
C++ предпочитают ссылки. Например, 'std :: string test; void anyfunction (const std :: string & s); anyfunction (test) '. – UmNyobe
*** Рекомендуется ли использовать указатель на современной C++-строке? *** Нет, не делайте этого никогда. В последних миллионах строк' C++ Код, написанный мной, я не делал этого один раз. – drescherjm