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++
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода
Синтаксис командной строки: PARTIALLY_ACCESSED_ARRAY
Удар: низко
Введенный в R2013b