在项目中使用Jsoncpp, 有人使用了jsoncpp的asString()方法,同时也使用了.c_str(),如下
Json::Value root;
root["name"] = "Baikai";
root["age"] = 12;
const char* pData = root["name"].asString().c_str();
此时,pData不是我们想象中的 "Baikai"指针,而是“”。
因为在asString()调用之后,临时参数没有保存,数据区被释放了,.c_str()获得的指针是空的数据,
如下测试所示:
string test()
{
return "123";
}
int main(int argv, char* argvs[])
{
char* pData = test().c_str();//此时的数据同样是“”
}