各位大侠:请问DirectShow中关于内存的一个奇怪有关问题

各位大侠:请教DirectShow中关于内存的一个奇怪问题
各位大侠:

最近我在做一个监控应用,当切换摄像头预览捕获的图像时,释放Graph并重建,发现其中部分内存并不回收并且累计应用程序使用空间越来越大.经过多次调试,发现只要不Run就没有问题,或者其中捕获图像的Filter(SampleGrabber)不加入也没有大的问题.
其代码如下:
class   TestFilter
{
public:
        TestFilter();
        ~TestFilter();

private:
        CComPtr <IGraphBuilder>   m_pGB;
        CComPtr <IMediaControl>   m_pMC;
        CComPtr <IMediaEventEx>   m_pME;
        CComPtr <IPin>   m_pVidOutPin;
        CComPtr <IBaseFilter>   m_pDF;
        CComPtr <IBaseFilter>   m_pSampleGrabberFilter;
        CComPtr <IBaseFilter>   m_pRenderFilter;
        CComPtr <ISampleGrabber>   m_pSamGrabber;
        CComPtr <IPin>   m_pGrabberInput;
        CComPtr <IPin>   m_pGrabberOutput;
        CComPtr <IPin>   m_pRenderInputPin;
        BOOL   BindVFilter(INT   iDeviceId,IBaseFilter   **pFilter);
        void   DelMediaType(AM_MEDIA_TYPE   *pMt);
        HRESULT   InitVideoWnd(HWND   hWnd,INT   iWidth,INT   iHeight);
        void   SetCrossBar(void);
        void   CloseInterface(void);
        void   Init();
};
构造函数调用Init()完成初始化和Run(),析构函数Stop和释放对象.
void   TestFilter::Init(void)
{
        AM_MEDIA_TYPE   amt;
        HRESULT   hr=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void   **)&m_pGB);
        hr=CoCreateInstance(CLSID_NullRenderer,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(LPVOID*)&m_pRenderFilter);
        hr=CoCreateInstance(CLSID_SampleGrabber,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(LPVOID*)&m_pSampleGrabberFilter);

        ......

        hr=m_pSampleGrabberFilter-> QueryInterface(IID_ISampleGrabber,(void**)&m_pSamGrabber);
        ZeroMemory(&amt,sizeof(AM_MEDIA_TYPE));
        amt.majortype   =MEDIATYPE_Video;
        amt.subtype       =MEDIASUBTYPE_RGB32;
        amt.formattype=FORMAT_VideoInfo;
        hr=m_pSamGrabber-> SetMediaType(&amt);

        hr=m_pGB-> QueryInterface(IID_IMediaControl,(void**)&m_pMC);
        hr=m_pGB-> QueryInterface(IID_IMediaEventEx,(void**)&m_pME);

        if   (BindVFilter(g_selectcap,&m_pDF))   //   bind通过全局变量g_selectcap选定的摄像头
                return;
        hr=m_pGB-> AddFilter(m_pDF,L "VSource ");
        hr=m_pGB-> AddFilter(m_pSampleGrabberFilter,L "VideoGrabber ");
        ....
        //   枚举出各个filter的pin
        CComPtr <IEnumPins>   pEnum;
        m_pDF-> EnumPins(&pEnum);
        hr=pEnum-> Reset();