【发布时间】:2018-01-29 05:55:33
【问题描述】:
我处理过技术债务,发现以下问题,可能是以下 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 修改了代码。需要相同的建议
【问题讨论】:
-
你用的是什么编译器?这实际上与静态分析有什么关系吗?
-
string是std::string吗?因为如果是,那就是误报。但我有点怀疑这是像typedef char const* string;这样不愉快的事情。 -
@StoryTeller:Eeeeww!那太可怕了!
-
@MartinBonner - 是的。我支持误报,我真的支持。
-
这是误报。如果 Klocwork 无法理解 std::string,请放弃它,并获得更好的工具。
标签: c++ string static-analysis