接口释放问题

pasdtniuren 2009-08-24 06:54:50
dshow开发中接口释放的时候有的接口释放时候会异常如下


IMediaPosition *pPS_area1;

初始化成功了可是SAFE_RELEASE(pPS_area1);却异常终了,请教这是怎么回事其他接口大多能释放掉
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pasdtniuren 的回复:]
问题找到了 该接口指针没有在构造函数中负初值 (pPS_area1 = NULL;一下就好了),可是谁能解释一下在普通函数中使用QueryInterface中对pPS_area1已经进行查询了,为啥最后一释放就出错了,而且最后释放的时候我发现所有初期话的接口都是NULL(但释放这些接口不会出错),这是咋回事?
[/Quote]
如果出现NULL,那么释放前可以自己判断一下是否为NULL,是的话,就不要再次释放了
feilinhe 2009-09-01
  • 打赏
  • 举报
回复
接口都有自己的Release的,是不是已经调用过pPS_area1->Release();之类的了
pasdtniuren 2009-09-01
  • 打赏
  • 举报
回复
问题找到了 该接口指针没有在构造函数中负初值 (pPS_area1 = NULL;一下就好了),可是谁能解释一下在普通函数中使用QueryInterface中对pPS_area1已经进行查询了,为啥最后一释放就出错了,而且最后释放的时候我发现所有初期话的接口都是NULL(但释放这些接口不会出错),这是咋回事?
MoXiaoRab 2009-08-24
  • 打赏
  • 举报
回复
你的Release函数中将他们弄成NULL

检查是不是NULLL,就知道有没有释放过了
雪影 2009-08-24
  • 打赏
  • 举报
回复
贴你的代码,不然没法帮你分析
pasdtniuren 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]
QueryInterface是否正确查询到IMediaPosition对应接口.
[/Quote]
恩,查询到了我用hr= QueryInterface() 查询过了,并且在程序中使用过IMediaPosition接口的某些方法,以前我遇到过一般调调释放的顺序就好了,这次不行了,我怀疑是不是接口对象释放过了,但在程序中没有找到其他释放的地方,有没有检查pPS_area1是否存在的方法(存在的情况再释放)?
oyljerry 2009-08-24
  • 打赏
  • 举报
回复
QueryInterface是否正确查询到IMediaPosition对应接口.

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧