我在清理一堆指针时遇到了一些问题。在下面删除崩溃的行中:“内存错误/分段错误”。
std::stack<reports*> stack;
while(db.fetch())
{
reports* report = new report(db);
QThreadPool::globalInstance()->start(report);
stack.push(report);
}
while( QThreadPool::globalInstance()->activateThreadCount() != 0 );
while( !stack.empty() )
{
delete stack.top();
stack.pop();
}
我认为这段代码的上下文不相关。除了: db 通过引用传递给报告构造函数,该构造函数立即将必要的当前行数据复制为非指针成员。有人可以给我一个提示吗?
编辑:
自我回答:
好的,在写完我的问题后,我被上帝之光感动了。
默认
QThreadPool::globalInstance()->start(report);
将取得该对象的所有权。在循环中添加以下行可以解决问题:
report->setAutoDelete(false);
或者只是不清理......我自己让 Qt 去做。