2009-01-14 68 views
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; 
} 

這樣這個函數正常執行。

有誰知道什麼可能是錯的?

回答

2

最可能的解釋是pCellTower也沒有設置。它可以包含隨機位,並最終指向分配給應用程序的內存之外。操作系統不允許你的程序在分配給它的空間之外進行寫操作,因此它會向程序發送一些消息(Windows:異常,Unix/Linux:信號),表示寫入被拒絕。

0

如果向後追溯cbData值的起源處,您可能會發現它是一個未初始化的隨機值。

相關問題