[c++] 메모리 클린업 전략

C++은 강력한 프로그래밍 언어로, 메모리 관리를 직접 다루는 기능을 제공합니다. 하지만 메모리 누수(memory leaks)나 dangling 포인터(dangling pointers)와 같은 문제를 방지하기 위해 몇 가지 클린업 전략을 고려해야 합니다.

1. 스마트 포인터 사용

C++11부터 std::shared_ptrstd::unique_ptr와 같은 스마트 포인터가 도입되어 메모리 관리를 보다 쉽게 할 수 있게 되었습니다. 이러한 스마트 포인터는 객체가 더 이상 필요하지 않을 때 자동으로 메모리를 정리해줍니다.

#include <memory>

void example() {
    std::shared_ptr<int> sharedPtr = std::make_shared<int>(10);
    std::unique_ptr<int> uniquePtr(new int(5));

    // 포인터가 범위를 벗어나면 자동으로 메모리가 정리됨
}

2. 리소스 관리 클래스 사용

리소스 관리 클래스를 사용하여 리소스가 더 이상 필요하지 않을 때 자원을 자동으로 해제하도록 할 수 있습니다. 이를테면 파일 입출력, 네트워크 연결 등을 안전하게 관리할 수 있습니다.

class File {
public:
    File(const std::string& filename) : m_fileHandle(open(filename.c_str(), O_RDONLY)) {
        if (m_fileHandle == -1) {
            throw std::runtime_error("Failed to open file");
        }
    }

    ~File() {
        if (m_fileHandle != -1) {
            close(m_fileHandle);
        }
    }

private:
    int m_fileHandle;
};

3. 플래그 사용

메모리 관리를 위해 특정 플래그를 사용하여 리소스를 추적하고 관리할 수 있습니다. 이는 리소스 할당과 해제를 추적하고 메모리 누수를 방지하는 데 도움이 될 수 있습니다.

#ifdef DEBUG
    #define TRACK_MEMORY_ALLOCATION
#endif

이러한 전략들을 사용하여 C++에서 메모리 클린업을 보다 효과적으로 관리할 수 있습니다.