boost shared_ptr이 std::map 의 value member로 사용할 때 질문입니다.

chobozzang의 이미지

안녕하세요.

map 의 밸류로 들어갈 구조체가
typedef struct _abc {
int a;
int b;
boost::shared_ptr dt;
}abc;
이런식으로 선언 되어 있고

std::map test_map;

이렇게 정의되어 있을 때 map을 erase 하기 전에 shared_ptr 을 지워주지 않아도 메모리 leak 이 발생하지 않을까 궁금해서요... map erase 하면서 자동적으로 value 값이 지워질때 shared_ptr 이 파괴되면서 소멸자가 호출될까요?

혹시 이 부분을 테스트하려면 어떻게 해야 좋을까요? 해당 프로세스의 가상 메모리 사용량을 계속해서 log로 찍어주는 방법이 있을까요?

chobozzang의 이미지

std::map<int, abc> test_map; 입니다.

klara의 이미지

테스트해보시려면 shared_ptr에 넣는 객체의 소멸자를 찍어보면되죠.

chobozzang의 이미지

감사합니다 ^^. 테스트해보니 map을 지우니까 소멸자가 호출되네요