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

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

2022-11-29 21:41
7503

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

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

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

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

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

 

 

 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

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