描述:
不用_ATL_DEBUG_INTERFACE程序正常运行,用了只有当B达到一定数量时候,有时候是一百几,有时候是2百几,释放的时候,FINALRELEASE出现问题。
代码如下:
CSimpltMap<long,Ib*> m_BMap;
STDMETHODIMP A::CreateB(long i,/*[out,retval]*/ Ib* *pb)
{
// TODO: Add your implementation code here
HRESULT hr;
hr=CoCreateInstance(CLSID_b,NULL,CLSCTX_INPROC_SERVER,IID_Ib,
(void**) pb);
m_BMap.Add(i,(*pN));
}
void A::FinalRelease()
{
long i;
if(m_BMap.GetSize()==0)
return;
for (i=0;i<m_BMap.GetSize();i++)
{
IB* pb=m_BMap.GetValueAt(i);
pB->Release();
}
m_BMap.RemoveAll();
}
客户端为
dim aa as A
Set aa = New A
Dim i As Integer
For i = 1 To 400 '如果没出错可以适当调大循环数
aa.Create i
Next i
解决方案1:
m_BMap.Add(i,(*pN)); i是从1开始的
而Release的时候i是从0开始的