首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请问一个CComPtr<T>对象释放的有关问题

2012-02-21 
请教一个CComPtrT对象释放的问题一个已编译成exe的程序,在第一次解析xml文件的时候能够正确运行.当退出

请教一个CComPtr<T>对象释放的问题
一个已编译成exe的程序,在第一次解析xml文件的时候能够正确运行.当退出该程序重新进入再解析同一xml文件时就报错,错误如下:
File     C:\program   File\Windows   CE   tools\wce420\pocket   pc   2003\include\atlbase.h     line   758

我找到line   758代码是:
_NoAddRefReleaseOnCComPtr <T> *   operator-> ()   const
{
ATLASSERT(p!=NULL);
return   (_NoAddRefReleaseOnCComPtr <T> *)p;

那就是说p!=NULL,我想问一下,使用CComPtr不是不需要调用release/detach的吗?这个错误是什么原因呢?

[解决办法]
调用之前先把CComPtr <T> 的值赋成NULL。
CComPtr不需要显示release是指在对象的生存期内。你的CComPtr一定是放在了功能模块之外定义的,所以功能模块退出时CComPtr并没有被释放

热点排行