我的程序中的某些功能需要运行很长时间,以便用户可能会中断它。结构是这样的:
int MainWindow::someFunc1()
{
//VP is a class defined somewhere.
VP vp1;
//the for loop that needs time to execute.
return 0;
}
int MainWindow::someFunc2()
{
VP vp2;
//another loop that consumes time.
return 0;
}
如果用户同时运行其中一个函数或者点击右上角的退出,程序仍然会在后台运行,直到循环结束。我尝试释放void closeEvent(QCloseEvent *)中的资源:
void MainWindow::closeEvent(QCloseEvent *)
{
vp.stopIt();
}
然而,由于 vp1 和 vp2 是局部变量,我不知道如何将它们传递给 closeEvent() 函数并释放资源。任何建议将不胜感激。
最佳答案
由于变量是在堆栈上创建的,它们将在其作用域的末尾自动释放(在您的情况下是函数的结束 }
),您不必担心关于他们。
如果您想在函数结束之前释放它们,您需要重新实现这些函数,并且可能在函数外部自行为这些变量分配和释放内存。将它们传递给函数的方式(将它们作为函数参数传递,或将它们包含到类中)取决于您。
关于c++ - 如何释放局部变量拥有的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968662/