본문 바로가기
프로그래밍/C++

C++ 소멸자란?

by Hwan2 2019. 2. 22.
728x90
반응형

소멸자란 객체의 사용이 끝나고 메모리의 반환될 때 자동으로 실행되는 코드를 말합니다.

 

생성자 처럼 사용자가 따로 선언을 하지 않으면 컴파일러가 컴파일시 자동으로 생성해줍니다.

#include <iostream>

using namespace std;

class A {
    int num;
public:
     
    ~A() {}
};

int main(void) {

    A a;

    return 0;
}​

 

이렇게 생겼습니다.

 

'~' 로 시작하게 됩니다.

 

그럼 주로 어떨때 사용이 되느냐?

 

#include <iostream>

using namespace std;

class A {
    int * num;
public:
     
    A() {
        num = new int[10];
    }

    ~A() {
        delete num;
    }
};

int main(void) {

    A a;

    return 0;
}​

 

 

이처럼 객채를 생성하는 과정에서 동적할당을 한 변수가 있을 시

 

객채가 소멸되는 과정에서 소멸자에 delete 함수와 같이 사용하게 됩니다.

 

만약에 프로그래머가 실수로 객채 소멸 과정에서 동적할당한 변수를 메모리 해제 시켜주지 않았다면?

 

이는 메모리 오버해드가 일어나 메모리 낭비가 되게 됩니다.

 

때문에 이러한 습관을 길러 두는 것이 좋습니다.

 

 

 

반응형

댓글


스킨편집 -> html 편집에서