当我尝试调试以下函数段时,执行在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;
}
这样函数正常执行。
有谁知道可能出现什么问题?
答案 0 :(得分:2)
最可能的解释是pCellTower也没有设置。它可能包含随机位,并最终指向分配给您的应用程序的内存。操作系统不允许程序在分配给它的空间之外写入,因此它会向程序发送某种消息(Windows:异常,Unix / Linux:信号),写入被拒绝。
答案 1 :(得分:0)
如果你向后追溯cbData值的来源,你可能会发现它是一个未初始化的随机值。