我从事过技术债务并发现了以下问题,可能对以下C ++代码有误:
string CXXXIXMLImp::GetString(U32 val)
{
char bufVal[64] = { 0 };
sprintf_s(bufVal, 63, "%ld", val, 63);
string strRetVal = bufVal;
return strRetVal;
}
错误:通过return语句表达式
返回局部变量的地址
注意:上面的string
是std::string
我在第5行使用字符串赋值函数或使用string :: copy修改了代码。需要同样的建议
答案 0 :(得分:1)
这是误报。如果Klocwork无法理解std :: string接受其构造函数参数的副本,然后正确处理副本,我建议你需要一个更好的静态分析工具。
不使用字符串assign或string::copy
污染您的代码。 (如果你可以通过将行更改为const string strRetVal = buffer;
来禁止它。)