最近遇到了一个BUG,就是使用
QString(
"Hello"
).toLocal8Bit().data();
引起了一个乱码问题。因为之前的项目经验中,知道了要想解决该问题,需要将该行代码分开来写,这也是网上普遍给出来的答案:
QString
str
=
;
QByteArray ba
.toLocal8Bit();
char
*
pStrDataPtr
ba.data();
问题虽然是解决了,但是今天又被同事提及,却发现不能解释个中缘由。所以有了这篇分析文章。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
contain_of QString("Hello") 应该是临时对象析构 导致的
_THINCT 嗯嗯,是的。析构的时候,将字符串用到的内存也一起释放了。
contain_of clang -Wlifetime 选项可以检测临时对象析构后再调用这种错误 不知道正式发布没 godbolt.org/z/jCxWWE 我就在这见过