在组件中定义了一个接口指针list
list< IUser *> m_lstUser;
//现在要将获得接口指针放入list
//
IUser *pUser;
// 获得pUser
.....//将pUser放入m_lstUsers中
m_lstUsers.push_back(pUser); 请问:这时是否需要对pUser作Release?
即:pUser->Release
list< IUser *> m_lstUser;
//现在要将获得接口指针放入list
//
IUser *pUser;
// 获得pUser
.....//将pUser放入m_lstUsers中
m_lstUsers.push_back(pUser); 请问:这时是否需要对pUser作Release?
即:pUser->Release
STDMETHODIMP CUsers::Item(VARIANT v, IUser **pItem)
{
std::list<IUser *>::iterator iter = m_lstUsers.begin();
for(; iter != m_lstUsers.end(); ++iter){
//
IUser *pUser = *iter; //
CComBSTR bstrName;
pUser->get_Name(&bstrName);
//pUser = iter->get_Name();
if(bstrName == v.bstrVal){ //
*pItem = pUser; //这个AddRef是否必需?
(*pItem)->AddRef(); return S_OK;
}
} return S_OK;
}
还有
IUser *pUser = *iter;
后面是否需要
pUser->AddRef?
//
STDMETHODIMP CUsers::Item(VARIANT v, IUser **pItem)
{
std::list <IUser *> ::iterator iter = m_lstUsers.begin();
for(; iter != m_lstUsers.end(); ++iter){
//
IUser *pUser = *iter; //这个AddRef是必需
pUser-> AddRef(); //那这里是否需要iter-> Release ???
//iter-> Release //
CComBSTR bstrName;
pUser-> get_Name(&bstrName); //pUser = iter-> get_Name();
if(bstrName == v.bstrVal){ //
*pItem = pUser; //这个AddRef是必需
(*pItem)-> AddRef(); //那这里是否需要pUser-> Release ???
//pUser-> Release return S_OK;
}
} return S_OK;
}