我写了一个字幕叠加Filter,但是有内存泄露,帮忙看看问题出在什么地方,谢谢
class CMdImageGrabber
: public CTransInPlaceFilter, public IMdImageGrabber
{
......
// 叠加图片缓存
LPBYTE m_pBuf;
......
};
为了叠加图片,我分配一个块内存,我在析构函数中delete[] m_pBuf,但是将Debug版的Filter注册后,再程序退出时有内存泄露,就是m_pBuf,在调用IGraphBuilder的Release后,我的这个Filter不释放,结果有一大片的内存泄露,其中就有m_pBuf,调试发现CMdImageGrabber的析构函数根本就就有调用,请问这是什么原因?
我的这个Filter是一个AX形式的,不是进程内的类
解决问题另开贴给200分
问题点数:20、回复次数:4Top
1 楼zhangguanshi(石头一块)回复于 2005-11-02 19:09:26 得分 0
你可以找一款软件试试:boundcheck
好像在vcbase.com上有,找找!
Top
2 楼superdai(淨居天人)回复于 2005-11-03 17:16:19 得分 0
只能说明没有执行delete[] m_pBuf
具体还要看程序整体情况。Top
3 楼ccxian123(力挽狂澜)回复于 2005-11-03 20:10:44 得分 0
你是释构函数没有调用还是就有调用?估计你的情况是计数器在Graphbuilder->Release后还没减到0吧。。跟下具体原因吧Top
4 楼ablewindy(我是【风子】我怕谁)回复于 2005-11-04 08:54:04 得分 0
很有可能是你那个类的某个成员不能正确析构,导致不能运行到delete[] m_pBuf就异常退出了!Top




