Как решить предупреждение о многопространстве "индекс массива за пределами - PullRequest
0 голосов
/ 10 июля 2019

При выполнении анализа Poly-space на основе кода я получаю оранжевое предупреждение о проверке нижеприведенного фрагмента о том, что указатель может находиться за его пределами.

Я пытался добавить нулевую проверку перед доступом к массиву, как if (x [i]! = NULL), но это не помогает. Указатель, который передается в качестве аргумента функции, также объявляется как указатель, так что я не могу определить размер буфера, передаваемого в функцию.

void foo(const int *x, unsigned int value)
{
   int i, data;
   for(i=0;i<value;i++)
   {
      data = x[i]; // pointer may be out of bounds here
   }
   sendToSomeOtherInterface(data);
}

Я могу понять, что в polyspace может предполагаться, что в какой-то момент указатель может указывать на недопустимую память, а код может дать сбой, но как написать код более аккуратно, чтобы избежать проблемы? Я не могу изменить использование указателей, так как это влияет на огромные файлы.

...