c++ - 如何释放局部变量拥有的资源?

标签 c++ qt

我的程序中的某些功能需要运行很长时间,以便用户可能会中断它。结构是这样的:

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/

相关文章:

c++ - 使用 Clang 的 "undefined" sanitizer 时 undefined symbol

c++ - 在模板上下文中指向成员函数或静态函数的指针

c++ - 具有背景图像和其他透明背景的 QFrame

c++ - QTableView::scrollTo 模型重置后立即并经过一段延迟后

c++ - 将二维数组从 C++ 传递到 qml

c++ - 使用 libxml 解析 XML

c++ - 如何在 std::unordered_set 上使用 boost::range::adaptors::transformed?

c++ - 指向重载、模板化成员函数的 const 指针的静态数组

c++ - QFileInfo exists() 和 isFile() 错误

c++ - 在 QML 中的 VideoOutput 上显示用 C++ 创建的相机