如何通过QString和Qt的其他隐式共享数据结构生成内存泄漏

时间:2012-11-04 14:21:02

标签: c++ qt

Qttring和Qt的许多数据结构都是隐式共享

我怎么能让他们的内存泄漏?

如果是shared_ptr,循环依赖会导致内存泄漏 QString和Qt内存中的数据结构之类的QString也会泄漏吗? 我想知道如何使QString泄漏的记忆,所以我不会堕落 进入它的陷阱。

经过一番研究,看起来我不必担心循环依赖时 它是QString?感谢您的回复,现在我不必担心。

1 个答案:

答案 0 :(得分:1)

在Qt版本之前,4个并发访问共享相同数据的QString的两个副本可能会导致问题,因为QString是COW但没有锁定引用计数。这是一个问题。从版本4开始,使用原子来处理引用计数,这解决了问题。 你可以通过在其中放置可以抛出奇怪位置的东西来破坏一些Qt容器,但我想不出可能影响QString的方法。要在Qt中处理异常处理,文档很模糊,通常意味着要小心;)

http://doc-snapshot.qt-project.org/4.8/exceptionsafety.html

如果在运行Qt时内存不足,则期望世界结束,在这种情况下,QString是否泄漏可能无关紧要。