如何解决“多边形警告”数组索引超出范围

时间:2019-07-10 04:31:00

标签: c arrays pointers const qa-c

在代码库上进行多边形空间分析时,我在以下代码段上收到橙色检查警告,指出指针可能在其边界之外。

我曾尝试在访问数组之前添加空检查,如if(x [i]!= NULL),但这无济于事。作为参数传递给函数的指针也声明为a指针,这样我就无法确定传递给该函数的缓冲区的大小。

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可能会假设在某个时间点,指针可能指向无效的内存,并且代码可能崩溃,但是如何更清晰地编写代码以避免出现问题?我无法更改指针的用法,因为它会影响大文件。

0 个答案:

没有答案