Почему функции не выполняются полностью? - PullRequest
0 голосов
/ 14 января 2009

Когда я пытаюсь отладить следующий сегмент функции, выполнение тормозит (выпрыгивает из функции) в строке 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 ]

2 голосов
/ 14 января 2009

Наиболее вероятным объяснением является то, что pCellTower также не установлен. Он может содержать случайные биты и в конечном итоге указывать за пределы памяти, выделенной вашему приложению. ОС не может позволить вашей программе писать вне выделенного ей пространства, поэтому она отправляет программе какое-то сообщение (Windows: исключение, Unix / Linux: сигнал), что запись была отклонена.

0 голосов
/ 14 января 2009

Если вы проследите, откуда происходит значение cbData, вы, вероятно, обнаружите, что это неинициализированное, случайное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...