동적 메모리의 안전한 관리

C++Beginner
지금 연습하기

소개

이번 챌린지에서는 지역 서점에서 사용할 소규모 재고 관리 시스템을 개발합니다. 서점 측은 메모리 누수 위험 없이 도서 상세 정보를 추적할 수 있는 효율적인 메모리 관리 방식이 필요합니다. 여러분은 unique_ptr를 활용하여 도서 정보를 동적으로 관리하는 Book 클래스를 설계하고, 도서 제목, 저자, 출판 연도를 매개변수로 받는 생성자를 구현하며, 스마트 포인터 관리 기법을 통해 도서 정보를 안전하게 출력하는 메서드를 추가하게 됩니다.

이 콘텐츠는 챌린지입니다. 가이드에 따라 학습하는 실습 (Guided Lab) 과 달리, 제공된 과제를 스스로 해결해야 합니다. 챌린지는 다소 난이도가 있을 수 있습니다. 해결이 어렵다면 Labby 와 상의하거나 모범 답안을 확인해 보세요. 통계 데이터에 따르면 이 챌린지는 초급 수준이며, 100%의 통과율과 학습자들로부터 100%의 긍정적인 평가를 기록하고 있습니다.

동적 메모리의 안전한 관리

지역 서점을 위한 소규모 재고 관리 시스템을 개발 중입니다. 서점은 메모리 누수 걱정 없이 도서 상세 정보를 효율적으로 관리할 수 있는 시스템을 원하고 있습니다.

과제

  • unique_ptr를 사용하여 도서 정보를 동적으로 관리하는 Book 클래스 작성
  • 도서 제목, 저자, 출판 연도를 인자로 받는 생성자 구현
  • 스마트 포인터 관리 방식을 활용하여 도서 정보를 안전하게 출력하는 메서드 추가
  • 적절한 메모리 할당과 자동 자원 해제 과정 입증

요구 사항

  • 도서 객체 메모리 관리에 unique_ptr 사용
  • 구현 코드는 ~/project/book_tracker.cpp 파일에 작성
  • 제목, 저자, 출판 연도를 매개변수로 하는 생성자 구현
  • 도서 상세 정보를 출력하는 displayInfo() 메서드 포함
  • 객체 생성 및 소멸 과정에서 메모리 누수가 발생하지 않도록 보장

실행 예시

프로그램을 컴파일하고 실행하여 도서 정보를 확인합니다.

g++ book_tracker.cpp -o book_tracker
./book_tracker

출력 예시:

Book Title: The Great Gatsby
Author: F. Scott Fitzgerald
Publication Year: 1925

힌트

  • 자동 메모리 관리를 위해 std::unique_ptr를 활용하세요.
  • 생성자에서 멤버 변수를 초기화하는 것을 잊지 마세요.
  • 소유권을 이전해야 할 경우 std::move()를 사용하세요.
  • 도서 정보에 안전하게 접근하고 출력할 수 있는 메서드를 구현하세요.
✨ 솔루션 확인 및 연습

요약

정리하자면, 이번 챌린지에서는 unique_ptr를 사용하여 도서 정보를 동적으로 관리하는 Book 클래스를 제작해 보았습니다. 제목, 저자, 출판 연도와 같은 도서 상세 정보를 초기화하는 생성자를 구현하고, 해당 정보를 안전하게 출력하는 메서드를 추가했습니다. 이 과정의 핵심 목표는 올바른 메모리 할당과 자동 자원 해제를 실천하여, 객체의 생성부터 소멸까지 메모리 누수가 발생하지 않도록 하는 것입니다.