• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

벡터와 스마트포인터 같이사용 ?

23.07.03 20:38 작성 23.07.03 20:39 수정 조회수 244

2

스마트 포인터가 메모리를 자동삭제해주고 , 벡터 컨테이너 도 포인터들을 자동으로 삭제해주는데

벡터에 스마트포인터를 넣어서 사용하면 어떻게 되는건가요 ?

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2023.07.04

안녕하세요, 답변 도우미 Soobak 입니다.

std::vector 컨테이너는 생명 주기가 끝났을 때, 직접 관리하고 있는 객체들에 대해서만 메모리를 해제해줍니다.
즉, 벡터에 포인터를 저장하는 경우, 벡터가 소멸될 때 포인터들은 삭제되지만, 포인터들이 가리키는 메모리는 자동으로 해제되지 않습니다.
따라서, 메모리 누수를 방지하려면, 벡터가 소멸되기 전에 포인터가 가리키는 메모리를 명시적으로 해제해주어야 합니다.

하지만, 벡터에 스마트 포인터를 사용하게 되면, 벡터가 소멸될 때 포인터가 가리키는 메모리도 자동으로 해제되므로, 명시적으로 메모리를 해제할 필요가 없게 되고, 메모리 누수 방지에 도움이 됩니다.