#include <iostream>
#include <memory>
void usePointer(int* ptr) {
std::cout << "Value: " << *ptr << std::endl;
}
int main() {
std::unique_ptr<int> p1 = std::make_unique<int>(42);
// 소유권 이전 (p1은 더 이상 자원을 소유하지 않음)
std::unique_ptr<int> p2 = std::move(p1);
// 실수로 이전 unique_ptr로 접근 (런타임 에러)
usePointer(p1.get()); // 위험: 이미 소유권 없음
// 여전히 p2는 정상 작동함
usePointer(p2.get());
return 0;
}
실행결과
Segmentation fault (core dumped)
cpp 스마트포인터 잘못쓰면 런타임에 펑 터진다는데 사실이냐?
- dc official App
해당 댓글은 삭제되었습니다.
뭔소리여 이거는 RAII에서 소유권 이전되면 원 포인터는 NULL되는거니까 주석이 달려있잖아. 즉 의도된 거지. 즉 본문글은 '아무리 스마트 포인터라도 러스트의 명시적 소유권 모델과는 다르다'를 C++로 보여주는 예시임. 그럼 아까 글이랑 맥락을 봐서는 '소유권 모델이 명시적이지 않고, 컨벤션에 영향받다가 명시화한 것은 RUST' 이고, C++로 보여주는거
얘 예전부터 생각하지만 본문 글을 안읽고 지 할말만하노
전혀 다른 관점에서 보시네