Partially accessed array

Массив частично читается или записывается до окончания возможностей

Описание

Этот дефект возникает, когда массив частично читается или записывается перед концом возможностей массива. Для массивов, локальных к функции, конец возможностей происходит, когда функция заканчивается.

Риск

Частично доступный массив часто указывает на пропуск в кодировании. Например, при сортировке массива с помощью цикла вы использовали некоторое количество итераций цикла, так что один элемент массива никогда не читается. Реализация может привести к тому, что массив не будет полностью отсортирован.

Зафиксировать

Исправление зависит от первопричины дефекта. Например, если первопричиной является цикл с неправильным количеством итераций, измените связанный цикл или добавьте шаг после цикла, чтобы получить доступ к непрочитанным или неписанным элементам.

См. примеры исправлений ниже.

Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.

Примеры

расширить все

int Calc_Sum(void) 
{
  int tab[5]={0,1,2,3,4},sum=0;  
  /* Defect: tab[4] is not read */ 
  
  for (int i=0; i<4;i++) sum+=tab[i];
  
  return(sum);

 }

Область массива tab только частично считывается до конца функции Calc_Sum. При вычислении sum, tab[4] не включен.

Коррекция - доступ к каждому элементу массива

Одной из возможных коррекций является чтение каждого элемента массива tab.

int Calc_Sum(void) 
{
  int tab[5]={0,1,2,3,4},sum=0;   
  
  /* Fix: Include tab[4] in calculating sum */
  for (int i=0; i<5;i++) sum+=tab[i]; 
  
  return(sum);

 }

Информация о результатах

Группа: Поток данных
Язык: C | C++
По умолчанию: On для рукописного кода, off для сгенерированного кода
Синтаксис командной строки: PARTIALLY_ACCESSED_ARRAY
Влияние: Низкое
Введенный в R2013b