C++ 객체 수명과 암묵적 객체 생성
백엔드
C++ 객체 수명과 암묵적 객체 생성
두줄요약
C++ 객체 수명과 암묵적 객체 생성 규칙을 정리하며 reinterpret_cast 사용 시의 UB 가능성을 설명했습니다. C++20의 표준 수용 범위와 std::launder, placement new의 역할도 함께 다루었습니다.
핵심 내용
- C++의 객체 수명과 저장 기간을 구분해 reinterpret_cast 기반 바이트 해석의 UB 가능성 정리
- placement new, std::launder, 투명한 교체를 통해 같은 스토리지에서 객체 수명과 포인터 유효성 관리
- C++20의 암묵적 객체 생성으로 malloc, memcpy, 바이트 배열 기반 관행 일부가 표준에 맞게 수용
- mmap 같은 일부 실무 패턴은 여전히 표준의 명시적 합법화 범위 밖이라는 한계
적용해볼 점
- 바이트 버퍼를 타입 포인터로 바로 해석하기보다 객체 수명 시작 여부 확인
- 같은 주소라도 포인터의 파생 관계와 std::launder 필요성 점검
- 암묵적 수명 타입과 blessed operation 범위 구분
