为什么函数不能完全执行?

时间:2009-01-14 10:31:05

标签: c++ callback

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

这样函数正常执行。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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