当我尝试调试以下函数段时,执行会在pCellTower-> m_pCellTowerInfo = pCellInfo行中制动(跳出该函数):
RILCELLTOWERINFO* pCellInfo = (RILCELLTOWERINFO*)lpData;
CCellTower *pCellTower = (CCellTower*)cbData;
if(pCellTower != NULL)
{
pCellTower->m_pCellTowerInfo = pCellInfo;
}
(未设置指针pCellInfo)
然后,我尝试对这一行发表评论:
RILCELLTOWERINFO* pCellInfo = (RILCELLTOWERINFO*)lpData;
CCellTower *pCellTower = (CCellTower*)cbData;
if(pCellTower != NULL)
{
//pCellTower->m_pCellTowerInfo = pCellInfo;
}
这样,函数可以正常执行。
有谁知道可能是错的吗?
最佳答案
最可能的解释是pCellTower也未设置。它可能包含随机位,最终指向分配给您应用的内存之外。操作系统不允许您的程序在分配给它的空间之外进行写操作,因此它会向程序发送某种消息(Windows:exception,Unix / Linux:signal),表明该写操作被拒绝。