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