次のような for ループで実行されている QThread (ClassA と呼ばれる) から継承されたクラスがあります。
for(int i=0;i<somenumber;i++)
{
ClassA* classa = new ClassA();
classa->execute(); // just a normal direct function call
classa->exit();
classa->deleteLater();
}
問題は、classa に多くのメモリが含まれており、ループがまだ実行されている間は破棄されていないように見えることです。そのため、メモリが蓄積されるとすぐにプログラムがクラッシュします (メモリ リークなど)。もちろん、プログラムをクラッシュさせる「delete classa」も使用しようとしました。
そのようなクラスをループで適切に実行および削除する方法を誰もが知っているので、メモリを常に占有することはありません。
for ループも別のスレッドにあります。では、deleteLater() を呼び出す際にイベント ループが重要になる可能性があるスレッド階層はありますか? コードは少し複雑すぎて書くことができませんが、私が望む最も迅速な答えは、スレッド環境で Qthread オブジェクトを適切に削除する方法 (つまり、eventloop を適切に使用する方法) であり、メモリ リーク (またはメモリがQthread オブジェクトは削除されません)