首页
社区
课程
招聘
[原创]Qt,一个习惯引起的无效堆内存
发表于: 2022-11-29 21:41 8440

[原创]Qt,一个习惯引起的无效堆内存

2022-11-29 21:41
8440

最近遇到了一个BUG,就是使用

1
QString("Hello").toLocal8Bit().data();

引起了一个乱码问题。因为之前的项目经验中,知道了要想解决该问题,需要将该行代码分开来写,这也是网上普遍给出来的答案:

1
2
3
QString str = "Hello";
QByteArray ba = str.toLocal8Bit();
char* pStrDataPtr = ba.data();

问题虽然是解决了,但是今天又被同事提及,却发现不能解释个中缘由。所以有了这篇分析文章。

 

 

 


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2022-11-29 23:05 被_THINCT编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 354
活跃值: (2637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
QString("Hello") 应该是临时对象析构 导致的
2022-11-29 22:06
0
雪    币: 4290
活跃值: (8650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
contain_of QString("Hello") 应该是临时对象析构 导致的
嗯嗯,是的。析构的时候,将字符串用到的内存也一起释放了。
2022-11-29 22:17
0
雪    币: 354
活跃值: (2637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
_THINCT 嗯嗯,是的。析构的时候,将字符串用到的内存也一起释放了。
clang -Wlifetime 选项可以检测临时对象析构后再调用这种错误 不知道正式发布没 godbolt.org/z/jCxWWE 我就在这见过
2022-11-29 22:26
0
雪    币: 4290
活跃值: (8650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
contain_of clang -Wlifetime 选项可以检测临时对象析构后再调用这种错误 不知道正式发布没 godbolt.org/z/jCxWWE 我就在这见过
嗯,我也了解一下。
2022-11-29 22:43
0
游客
登录 | 注册 方可回帖
返回
//