当我尝试调试以下函数段时,执行会在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),表明该写操作被拒绝。

09-04 03:23