[c++] 스마트 포인터 사용
C++에서 메모리 누수와 다른 메모리 관련 문제를 방지하기 위해 스마트 포인터를 사용하는 것이 좋습니다. 스마트 포인터는 포인터를 감싸고 있는데, 객체가 더 이상 필요 없을 때 해당 포인터가 자동으로 삭제됩니다.
종류
C++ 표준 라이브러리에는 다양한 종류의 스마트 포인터가 있습니다. 그 중에서 가장 널리 사용되는 것은 std::unique_ptr
와 std::shared_ptr
입니다.
std::unique_ptr
: 해당 객체에 대한 유일한 소유권을 가지며, 소유권이 이전되지 않습니다.std::shared_ptr
: 여러 객체가 동시에 공유할 수 있으며, 참조 횟수를 기록하여 마지막 참조가 제거될 때 자동으로 메모리를 해제합니다.
예제
#include <memory>
int main() {
// unique_ptr 사용 예제
std::unique_ptr<int> uniquePtr(new int(42));
// shared_ptr 사용 예제
std::shared_ptr<int> sharedPtr(new int(42));
std::shared_ptr<int> sharedPtr2 = sharedPtr; // 참조 횟수 증가
// 블록 끝부에 도달하면 uniquePtr와 sharedPtr는 자동으로 삭제됨
}
스마트 포인터는 메모리 관리를 간편하게 해줄 뿐만 아니라, 코드의 가독성과 유지 보수성을 향상시킵니다. 적절하게 사용한다면 프로그램의 안정성을 높일 수 있습니다.