一个函数中new的内存储器,在另外一个函数中为什么不能使用

一个函数中new的内存,在另外一个函数中为什么不能使用?
BOOL CCollectors::addCollector(CDBApp  * ptDBApp,const CString strCollID, CCollector * ptCollector )
{
CString  strSql;
strSql.Format("select * from TDC004 where COLL_ID = '%s'",strCollID);

CRecordSet * rs = ptDBApp->Select(strSql);
if (rs &&(rs->FetchNext()))
{
CCollector  *  pCollector = new CCollector();
pCollector->setCollID(rs->GetStringValue("COLL_ID").Trim());

/*执行到这儿是对的*/ptCollector = pCollector;
delete rs;
return TRUE;
}
}

主函数中是这样调用的:

CCollector * ptCollector =(CCollector *) HTCollectors.SearchInHash(strCollID);
   if (ptCollector == NULL)
   {
if (Collectors.addCollector(ptDBApp,strCollID, ptCollector))
{
/*执行到这一句出错*/HTCollectors.InsertHash(ptCollector,ptCollector->getCollID());
}
   }

其中在addCollector函数中可以看到ptCollector指针指向了new的那段内存,是有值得,但是执行到
HTCollectors.InsertHash(ptCollector,ptCollector->getCollID());
这一句时,ptCollector指针的指向的内容为空了,请问是怎么回事?  多谢了

------解决方案--------------------
还是 传值,传址 问题
改成:
BOOL CCollectors::addCollector(CDBApp  * ptDBApp,const CString strCollID, CCollector ** ptCollector )


------解决方案--------------------
引用:
还是 传值,传址 问题
改成:
BOOL CCollectors::addCollector(CDBApp  * ptDBApp,const CString strCollID, CCollector ** ptCollector )

有道理,只是个简单的按值传递的问题,但遇到了指针,干扰了视线。
主函数的ptCollector值被按值传递给addCollector函数的形参ptCollector。
------解决方案--------------------
如果没看错你应该传递指针的指针或者指针的引用,你修改的只是形参的值,实参没有发生任何变化。可以在网上仔细看看参数传递相关的一些文章