ASSERT咋回事
ASSERT怎么回事啊
我编了一个对话框的程序,在设计的界面的时候用到了CBitmap类和CDC类,
但是总是出现这样的ASSERT失败:
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] == h
但是你执行到这里时ph[1] != h
我编了一个对话框的程序,在设计的界面的时候用到了CBitmap类和CDC类,
但是总是出现这样的ASSERT失败:
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] == h
但是你执行到这里时ph[1] != h