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

请教一个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并没有被释放