При выполнении анализа 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 может предполагаться, что в какой-то момент указатель может указывать на недопустимую память, а код может дать сбой, но как написать код более аккуратно, чтобы избежать проблемы? Я не могу изменить использование указателей, так как это влияет на огромные файлы.