Клиентский процесс получает ошибку «Ошибка чтения доступа 0x00000004» при попытке доступа к данным из пакета, отправленного с сервера.
Пакет принимается очень хорошо и обрабатывается соответственно. Но я получаю сообщение об ошибке, когда пытаюсь получить доступ к двойному указателю, который находится в пакете.
Вот указатель:
CGameObject **playerListImage;
Вот где выдается ошибка:
void CObjectManager::SetPlayerList(CGameObject **updatedList)
{
for(int i=0; i < m_nPlayerCount; i++)
m_pPlayerList[i] = updatedList[i];
}
Я знаю, что не так уж и много, но вот основное резюме.
Сервер отправляет мне пакет.
Я обрабатываю пакет соответственно. И все данные в пакете в порядке, за исключением двойного указателя.
ОДНАКО у меня есть поток клиента, работающий в том же процессе, что и поток сервера, и у этого клиента никогда не возникает проблем с двойным указателем.
Я предполагаю, что проблема как-то связана с нахождением в отдельных процессах. Но я в растерянности.
Заранее спасибо.
Похоже, проблема в том, что вы пытаетесь отправить указатель «по проводам». Вы не можете сделать это, указатель в одном процессе недопустим в другом процессе.
Так как похоже вы отправляете список игроков. Я не думаю, что у вас есть выбор, кроме как отправить каждого игрока отдельно, вместо того, чтобы пытаться отправить указатель всем игрокам.
Других решений пока нет …