0

当我尝试调试以下函数段时,执行在 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;
}

这样函数就可以正常执行了。

有谁知道可能出了什么问题?

4

2 回答 2

2

最可能的解释是 pCellTower 也没有设置。它可能包含随机位,并最终指向分配给您的应用程序的内存之外。操作系统不允许您的程序在分配给它的空间之外进行写入,因此它会向程序发送某种消息(Windows:异常,Unix/Linux:信号),表明写入被拒绝。

于 2009-01-14T10:36:40.830 回答
0

如果您向后追溯 cbData 值的来源,您可能会发现它是一个未初始化的随机值。

于 2009-01-14T10:42:42.860 回答