2013-12-16 27 views
0

如果程序即將退出,是否必須刪除指針?Qt:程序退出後指針自動刪除

像這樣:

#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() funtcion完成)的所有指針會自動銷燬?

+5

這是否真的讓你在相同的範圍內聲明'a'兩次? – 2013-12-16 17:57:49

+0

你爲什麼不選擇答案?有什麼遺漏? – lpapp

回答

0

所有可重用資源在操作系統退出時都會被操作系統回收(有一些特殊的例外,比如可能是套接字,有時也可能是共享內存)。但在這種情況下,它將被回收。

如果你想進入的好習慣,雖然,使用std::unique_ptr<int[]>(或者如果大小確實是一個常數,是小,只是int a[5]std::array<int, 5>)來存儲指針,那麼你不必擔心delete[]在所有。