[C++] 소멸자 (자원 해제)

kimyb·2022년 12월 16일

C++에서 소멸자(자원 해제)를 사용할 때 주의할 점이 있다.
소멸자는 객체가 파괴될 때 호출되므로 메모리 관리에 중요한 역할을 함.

1. 소멸자 개념:

소멸자는 동적으로 할당된 메모리를 해제하며,
해제하지 않을 경우 메모리 누수가 생길 수 있다.

class MyClass {
public:
    MyClass() {
        // 생성자
    }

    ~MyClass() {
        // 소멸자에서 메모리 해제
    }
};

2. RAII

다른 외부 자원을 보유하고 있는 경우에도 소멸자를 사용하여 할당 받은 자원을 명시적으로 해제해야 한다.
RAII (Resource Acquisition Is Initialization)을 사용하면, 객체 생성과 소멸 관리하는 데 편할 수 있다.

3. 가상 소멸자(상속)

객체의 다형성에서 부모 클래스의 포인터가 자식 클래스일때,
소멸자를 호출하면 자식의 소멸자도 불러주기 위해 virtual을 써야 된다.

따라서, 기본 클래스의 소멸자가 가상 소멸자인 경우 파생 클래스에서 해당 가상 소멸자를 오버라이드가 필요하다.

class Animal {
public:
    virtual ~Animal() {
        // 가상 소멸자
    }
};

class Cat : public Animal {
public:
    ~Cat() {
        // 파생 클래스 소멸자
    }
};

5. 소멸자 호출 순서:

객체의 소멸자는 생성자의 호출 역순으로 호출되기에 객체 간의 의존성이 있는 경우 고려하여 객체를 설계해야 함.

profile
공부했던것을 정리.

0개의 댓글