0

QString和Qt的很多数据结构都是隐式共享的

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

如果是shared_ptr,循环依赖会导致内存泄漏 QString 和其他类似QString 的数据结构在Qt 内存中也会泄漏吗?我想知道如何使 QString 的内存泄漏,这样我就不会陷入它的陷阱。

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

4

1 回答 1

1

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

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

如果您在运行 Qt 时内存不足,预计世界会结束,在这种情况下,QString 是否泄漏可能并不重要。

于 2012-12-13T14:13:09.903 回答