main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?

조회수 1334회

발생하는 문제 및 실행환경

main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?

main()도 return 타입이 있는걸 봐서는 return을 쓰는게 맞는 것 같은데 몇 몇 코드에서는 exit()을 같이 쓰는걸 봤습니다. 둘 중 어느 걸 쓰는게 맞나요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    main()에서 return을 쓸 때는, local object의 소멸자가 호출됩니다.

    exit()은 return하지 않기 때문에, local 객체의 소멸자가 호출되지 않습니다. (file같은 몇 몇 특수한 경우나 static object는 소멸합니다)

    abort()는 그 어떤 객체도 소멸하지 않습니다(global/static까지 포함).

    1. return한 경우

    #include <iostream>
    using namespace std;
    
    class Foo{
    public:
        int num;
        Foo(int n) : num(n) { cout << "생성자 호출: " << num << endl; }
        ~Foo() { cout << "소멸자 호출 : " << num << endl; }
    };
    Foo foo0(0);
    int main(){
        Foo foo1(1);
        return 0;
    }
    

    출력 :

    생성자 호출: 0
    생성자 호출: 1
    소멸자 호출 : 1
    소멸자 호출 : 0
    

    2. exit()한 경우

    #include <iostream>
    using namespace std;
    
    class Foo{
    public:
        int num;
        Foo(int n) : num(n) { cout << "생성자 호출: " << num << endl; }
        ~Foo() { cout << "소멸자 호출 : " << num << endl; }
    };
    Foo foo0(0);
    int main(){
        Foo foo1(1);
        exit(0);
    }
    

    출력 :

    생성자 호출: 0
    생성자 호출: 1
    소멸자 호출 : 0
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)