0

QStringとQtの多くのデータ構造は暗黙の共有です

どうすれば彼らのメモリリークを作ることができますか?

循環依存は、共有されている場合にメモリリークを引き起こします_ptr QStringおよびQ​​tメモリのデータ構造のような他のQStringもリークしますか?QStringのメモリをリークさせる方法を知りたいので、その罠にはまりません。

いくつかの調査の後、QStringの場合、循環依存について心配する必要はないように見えますか?お返事のおかげで、今は心配する必要はありません。

4

1 に答える 1

1

Qt 4 より前のバージョンでは、同じデータを共有する QString の 2 つのコピーに同時にアクセスすると、QString は COW であるが参照カウントをロックしていないため、問題が発生する可能性がありました。これは落とし穴でした。バージョン 4 の時点で、ref カウントは問題を解決するアトミックを使用して処理されます。奇妙な場所にスローできるものを入れることで、いくつかのQtコンテナを台無しにすることができますが、QStringに影響を与える方法は考えられません。Qt での例外処理に注意してください。ドキュメントは非常に曖昧であり、通常は用心することを意味します;)

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

Qt を実行しているときにメモリが不足した場合、世界が終了すると予想されます。その場合、QString がリークしたかどうかはおそらく問題ではありません。

于 2012-12-13T14:13:09.903 に答える