将QString转换为char * unstable?

时间:2013-07-30 20:52:48

标签: c++ qt casting

尝试找出为什么只有不到1%的时间我将内存写入问题。好像来自一个随机线程,它无法写入。我想知道铸件是否不稳定?

char *str = (char*)q_str.toStdString().c_str();
memcpy(m_list + m_count + m_length, str, strlen(str));
m_count++;

1 个答案:

答案 0 :(得分:4)

toStdString()返回一个临时的。这个临时符号在分号处被销毁,此时str成为悬空指针。做到这一点

string s = q_str.toStdString();
memcpy(m_list + m_count + m_length, s.c_str(), s.length());