2013-12-16 6 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'를 두 번 선언 할 수 있습니까? –

+0

왜 대답을 선택하지 않았습니까? 뭐가 없니? – lpapp

답변

0

모든 재사용 가능한 리소스는 프로그램이 종료 될 때 운영 체제에 의해 재사용됩니다 (소켓과 때로는 공유 메모리와 같은 몇 가지 특별한 예외가 있음). 그러나이 경우에, 그것은 매립 될 것입니다.

당신은,하지만 좋은 습관에 들어가 (크기가 정말 일정하고 작은, 그냥 int a[5] 또는 std::array<int, 5> 것입니다 경우 나) 포인터를 저장하려면, 다음에 대한 delete[]을 걱정할 필요가 없습니다 std::unique_ptr<int[]>를 사용하려면

조금도.