【问题标题】:Qt: pointer auto deletion after program exit [duplicate]Qt:程序退出后指针自动删除[重复]
【发布时间】:2014-01-04 05:36:15
【问题描述】:

如果程序即将退出,我是否必须删除指针?

像这样:

#include "mainwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();

    int *a = new int[5];

    delete []a;
    return a.exec();
}

我真的必须调用delete []a; 还是没关系,因为after return a.exec();main() 函数完成)所有指针都会自动销毁?

【问题讨论】:

  • 这真的能让你在同一个范围内声明a两次吗?
  • 为什么没有选择答案?有什么遗漏吗?

标签: c++ qt


【解决方案1】:

当您的程序退出时,操作系统会回收所有可重用的资源(有一些特殊的例外,比如可能是套接字,有时是共享内存)。但在这种情况下,它会被回收。

如果您想养成良好的习惯,请使用std::unique_ptr&lt;int[]&gt;(或者如果大小确实是一个常数并且那么小,则只需int a[5]std::array&lt;int, 5&gt;)来存储指针,那么您不需要完全不用担心delete[]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2018-06-16
    相关资源
    最近更新 更多