В зависимости от того, что somestlstring
и что там делается.
Если это локальная переменная, вы возвращаете указатель в память, которая освобождается после завершения GetSomeString
, так что это висячий указатель и ошибка.
Все сводится к времени жизни somestlstring
и операциям, которые вы над ним выполняете. Указатель, возвращаемый .c_str()
, гарантированно действителен только до следующей операции мутирования в строке. Так что если что-то изменится somestlstring
от вызова на .c_str()
и до того, как s
будет построено, вы окажетесь в неопределенной зоне поведения.