Я наткнулся на какой-то старый код, который содержит такую функцию:
LPCTSTR returnString()
{
char buffer[50000];
LPCTSTR t;
/*Some code here that copies some string into buffer*/
t = buffer;
return t;
}
Теперь я сильно подозреваю, что это неправильно. Я попытался вызвать функцию, и она возвращает строку, которую вы ожидаете, что она вернется. Тем не менее, я действительно не вижу, как это происходит: не является ли массив char
, который должен быть сохранен в стеке, и таким образом освобожден после выхода из функции? Если я ошибаюсь, и он хранится в куче, разве эта функция не создает утечку памяти?