인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

pakheae님의 프로필 이미지
pakheae

작성한 질문수

홍정모의 따라하며 배우는 C++

15.2 오른쪽-값 참조

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

작성

·

432

·

수정됨

2

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

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

답변 1

2

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

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

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

 

pakheae님의 프로필 이미지
pakheae

작성한 질문수

질문하기