读书人

帮一下忙吧大侠们,该如何处理

发布时间: 2012-01-29 21:39:32 作者: rapoo

帮一下忙吧,大侠们
谁能给我解释一下下面这段程序:

void CHandleMap::RemoveHandle(HANDLE h)
{
// make sure the handle entry is consistent before deleting
CObject* pTemp = LookupTemporary(h);
if (pTemp != NULL)
{
// temporary objects must have correct handle values
HANDLE* ph = (HANDLE*)((BYTE*)pTemp + m_nOffset); // after CObject
ASSERT(ph[0] == h || ph[0] == NULL);
if (m_nHandles == 2)
ASSERT(ph[1] == h);
}
pTemp = LookupPermanent(h);
if (pTemp != NULL)
{
HANDLE* ph = (HANDLE*)((BYTE*)pTemp + m_nOffset); // after CObject
ASSERT(ph[0] == h);
// permanent object may have secondary handles that are different
}
// remove only from permanent map -- temporary objects are removed
// at idle in CHandleMap::DeleteTemp, always!
m_permanentMap.RemoveKey((LPVOID)h);
}

怎么看也看不懂啊,我在作位图操作时总是能遇到:ASSERT(ph[1] == h); 这一句断言错误。帮下吧,我找几天也找不出原因啊???????

[解决办法]
从哪抄了这么个 代码 你只贴了部分 也不知道是干什么的

不过粗看 后认为你把 ph[1] 改成 ph[0] 也许就可以了
[解决办法]
你应该在自己的代码中查找错误。

读书人网 >VC/MFC

热点推荐