Вопрос:

возвращаемая из функции строка ссылается на локальный адрес объекта

c++ string static-analysis

70 просмотра

1 ответ

1 Репутация автора

Я работал над техническими долгами и обнаружил нижеприведенную проблему, возможно, ложноположительную для приведенного ниже кода C ++:

string CXXXIXMLImp::GetString(U32 val)
{
    char bufVal[64] = { 0 };
    sprintf_s(bufVal, 63, "%ld", val, 63);
    string strRetVal = bufVal;
    return strRetVal;
}

ошибка: адрес локальной переменной возвращается через выражение оператора возврата

Примечание: stringв приведенном вышеstd::string

Я изменил код в строке 5 с помощью функции назначения строки или с помощью string :: copy. Нужно предложение для того же

Автор: Shami Shariff Источник Размещён: 29.01.2018 05:55

Ответы (1)


1 плюс

24784 Репутация автора

Это ложный позитив. Если Klocwork не может понять, что std :: string принимает копию аргумента конструктора, а затем правильно обрабатывает копию, я предлагаю вам использовать более качественный инструмент статического анализа.

Вы не загрязнять ваш код с струнным правопреемником или string::copy. (Если вы можете подавить его, изменив строку на const string strRetVal = buffer;эту, все будет в порядке.)

Автор: Martin Bonner Размещён: 29.01.2018 07:12
Вопросы из категории :
32x32