std::vector 를 담고 있는 class 에서의 메모리누수?

kleinstein의 이미지

안녕하세요..

우선 코드부터..

class A
{
std::vector<double> test;
}

std::vector<A*> B;

이렇게 클래스안에서 vector를 사용하려고 합니다.

그런데 이렇게 한다음 나중에 프로그램을 닫으면 메모리 누수가 생기더라구요..
아직 초보라 햇갈리는데요..

뭐가 잘못된건가요?

도와주세요..

kewlbear의 이미지

메모리 누수를 어떻게 확인하셨는지요?

오장현의 이미지

new 로 할당한 클래스의 포인터를 B에 계속 넣는 코드인가 보군요.

그렇게 되면 B가 소멸될 때 할당된 메모리는 그대로 있고 포인터들만 사라지겠죠.

따라서 메모니 누수를 막으려면,

프로그램이 종료하여 B가 소멸되기 전에 B에 담겨있는 포인터들이 가리키는 객체들을 모두 delete해야 합니다.

navidad의 이미지

오장현님께서 답변을 달아주신 것 같네요..

관련 URL을 참조해보세요.

http://oopsla.snu.ac.kr/~sjjung/stl/ptr_0001.htm

=================================
나비아빠

=================================
나비아빠