[c++] 메모리 클린업 전략
C++은 강력한 프로그래밍 언어로, 메모리 관리를 직접 다루는 기능을 제공합니다. 하지만 메모리 누수(memory leaks)나 dangling 포인터(dangling pointers)와 같은 문제를 방지하기 위해 몇 가지 클린업 전략을 고려해야 합니다.
1. 스마트 포인터 사용
C++11부터 std::shared_ptr
및 std::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++에서 메모리 클린업을 보다 효과적으로 관리할 수 있습니다.