c 생성let c = CustomSmartPointer { … };스코프를 벗어나거나 값이 다른 곳으로 이동되면 컴파일러가 정리 지점을 결정한다. 조기 해제도 소유권을 끝내는 방식으로 요청한다.
c 생성let c = CustomSmartPointer { … };d 생성둘 다 현재 블록의 drop scope에 등록
정상 종료·return 등으로 안쪽 scope부터 정리
d → c같은 스코프의 지역 변수는 선언 역순으로 실행
여러 scope를 한 번에 벗어나면 안쪽에서 바깥쪽 순서다.
Drop::drop(&mut self) 뒤에 각 필드 destructor가 실행된다.
필드는 선언 순서로 drop된다. 지역 변수의 역순과 구분한다.
호출 없음. 컴파일러가 자동으로 정리한다.
drop(c)c를 함수로 이동해 즉시 정리한다. 이후 사용은 E0382다.
c.drop()명시적 destructor 호출은 중복 정리를 막기 위해 컴파일 단계에서 거부된다.
검증 기준: std::mem::drop은 마법이 아니라 인수를 소유하는 빈 함수다. 비-Copy 값은 이동되어 정리되지만, Copy 값은 복사본만 버리므로 원본 조기 해제가 되지 않는다.