Обнаружен код инструментария RangeChecks и ошибка доступа вне диапазона - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь повторно инициализировать массив, чтобы я мог вставить другие значения.

bReadBuffer[nBUFFERSIZE] ={ 0 } ;

1- Как удалить исключение отладки?

#endif
{
   if(IsProcessorFeaturePresent(PF_FASTFAIL_AVAILABLE))
   {
      __fastfail(failure_code);//exception in this line
   }

1 Ответ

0 голосов
/ 10 июля 2019

Очевидно, bReadBuffer[nBUFFERSIZE] = { 0 } не делает то, что вы думаете.Он попытается установить значение индекса nBUFFERSIZE (которое составляет вне пределов - причина ошибки доступа к диапазону) равным 0.

  • Вы можете использовать std::fill_n (https://en.cppreference.com/w/cpp/algorithm/fill_n) для сброса массива в стиле C.
  • Или внедрите массив в структуру, чтобы вы могли использовать = { 0 }; для инициализации всей структуры с 0.

Или даже лучше использовать C ++ , например:

, который обеспечит более простой способ очистки данных.

Таким образом, вы удаляете исключение отладки, написав правильный код. И вы пишете правильный код, читая книги, чтобы узнать, как работает язык C ++.

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