У меня проблема с этим фрагментом кода при использовании Visual Studio 2012 C ++ Express:
double clearbuffer(double buffid)
{
CBuffer*buff = (CBuffer*)buffers.item((int)buffid);
if(buff == NULL)return 0;
buff->clear();
return 1;
}
В основном эта функция вызывается довольно часто на моем игровом сервере C ++. Он используется для очистки буфера перед записью любых новых данных (буфер для отправки данных через Интернет). Дело в том, что эта ошибка происходит так случайно. Когда это происходило, я не мог понять, было ли это исключением или чем-то еще, потому что, как только это произошло, я должен был прекратить отладку с помощью сочетания клавиш или чего-то еще.
Однако в локальных системах я заметил значение переменной buffid:
buffid ——- Ошибка чтения значения регистра
Он сказал «Ошибка чтения значения регистра» для его значения. Есть ли причина, по которой это может произойти? Я предполагаю, что это было нарушение доступа, но я не уверен.
Также я заметил перед тем, как остановить выполнение, что отладчик остановился на этой строке:
buff-> ясно ();
Я не могу отладить это, потому что это случается редко, и это приводит к полной остановке моего сервера, поэтому приходится перезапускать его, что нарушает игровой процесс для клиентов, подключенных к нему.
Пожалуйста, скажите мне, если мне нужно предоставить больше кода, и я быстро отредактирую свой первый пост.
Задача ещё не решена.