기본 패턴
cpp
auto user = std::make_unique<User>("Mina");
user->print();설명
- RAII는 자원을 객체 생성과 소멸에 연결해 자동 정리를 유도하는 C++ 핵심 철학입니다.
- 스마트 포인터는
new와delete를 직접 다루지 않고 소유권 규칙을 명시하게 해 줍니다. std::unique_ptr는 단독 소유,std::shared_ptr는 공유 소유가 필요할 때 사용합니다.- 파일 핸들, 뮤텍스, 메모리처럼 정리가 필요한 자원 전반에 RAII 사고방식이 적용됩니다.
짧은 예제
cpp
#include <iostream>
#include <memory>
class User {
public:
explicit User(const char* name) : name(name) {}
void print() const { std::cout << name << "\n"; }
private:
const char* name;
};
int main() {
auto user = std::make_unique<User>("Mina");
user->print();
}빠른 정리
| 항목 | 설명 |
|---|---|
| RAII | 자원 획득과 해제를 객체 수명에 연결 |
std::unique_ptr | 단독 소유 스마트 포인터 |
std::shared_ptr | 참조 횟수 기반 공유 소유 |
make_unique | 안전하고 간결한 생성 방식 |
| 자동 해제 | 스코프를 벗어나면 소멸자에서 정리 |
주의할 점
공유 소유가 정말 필요한지 먼저 따져야 합니다. shared_ptr는 편하지만 소유권 구조를 흐리게 만들고 순환 참조 문제도 생길 수 있습니다.