在对代码库进行多空间分析时,我在下面的代码片段上收到一个橙色检查警告,指出指针可能超出其范围。
我尝试在访问 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 可能会假设在某个时间点,指针可能指向无效的内存并且代码可能会崩溃,但是如何更干净地编写代码以避免问题呢?我无法更改指针的使用,因为它对大文件有影响。