1
const char* p = qString.toStdString().c_str()
这种方式,toStdString()会生成一个临时对象,执行c_str()后就消亡了
如果把qString.toStdString().c_str()直接放在printf里面输出是没问题的。
但是如果把p传给第3方库接口或后面再使用p就容易出现野指针问题。
解决:
使用const引用延长生命周期一直到当前的局部作用域结束。
1
2
3
4
5
{
const string& pstr= qString.toStdString();
const char *p = pstr.c_str()
...//use p
}
或者不用QString,直接使用std::string。就不会生成临时对象了。