【发布时间】:2014-06-11 04:00:40
【问题描述】:
我有一个继承自 QThread 的类(我们称之为 ClassA),它在 for 循环中运行,如下所示:
for(int i=0;i<somenumber;i++)
{
ClassA* classa = new ClassA();
classa->execute(); // just a normal direct function call
classa->exit();
classa->deleteLater();
}
问题在于类包含大量内存,并且在循环仍在运行时似乎没有被破坏。所以程序会在内存建立后很快崩溃(如内存泄漏)。我也尝试使用“删除类”,这当然会使程序崩溃。
任何人都知道如何在循环中正确运行和删除此类类,以免它不断占用内存。
for 循环也位于另一个线程中。所以有一个线程层次结构,其中事件循环可能是调用 deleteLater() 的关键?代码写起来有点太复杂,但我想要的最快答案可能是如何在线程环境中正确删除 Qthread 对象(即正确使用 eventloop),因此没有内存泄漏(或者更像是内存构建为Qthread对象没有被删除)
【问题讨论】:
-
代码写起来有点复杂,但我想要的最快答案可能是如何在线程环境中正确删除Qthread对象(即正确使用eventloop),这样就不会出现内存泄漏(或者更像是由于 Qthread 对象未被删除而建立的内存)
标签: c++ multithreading memory qthread qeventloop