2010-08-10 9 views

답변

7

예, 메모리 누수를 방지하려면이 작업을 수행해야합니다. 더 나은 방법은 객체가있는 경우 (boost, C++ TR1, C++ 0X) 공유 포인터의 벡터를하게되는 독특한 포인터의

std::vector<std::tr1::shared_ptr<A> > l; 

또는 벡터 (C + +0)을 수행하는 실제로 이 컨테이너와 뭔가 다른

std::vector<std::unique_ptr<A>> l; 

또는 사용 부스트 사이을 공유 pointer containers

boost::ptr_vector<A> l; 

PS : A의 V를 잊지 마세요 @Neil Butterworth에 따라 가상 소멸자!

+0

+1 부스트 포인터 컨테이너의 경우 C++ 0x unique_ptr – rubenvb

+1

+1입니다. –

+0

안녕하세요. 저는 shared_ptr을 가지고있는 VS2010을 사용하고 있습니다. 내가 볼 수있는 예가 있습니까? --thx – q0987

5

shared_ptr 또는 이와 유사한 스마트 포인터의 배열을 사용하십시오. 그리고이 코드가 제대로 작동하려면 기본 클래스에 가상 소멸자가 있어야합니다.

0

가장 좋은 방법은 스마트 포인터 (Boost shared_ptr)를 사용하여 이런 종류의 문제를 방지하는 것입니다. 하지만 원시 포인터가 필요한 경우이 방법을 사용한다고 생각합니다.

관련 문제