在代码库上进行多边形空间分析时,我在以下代码段上收到橙色检查警告,指出指针可能在其边界之外。
我曾尝试在访问数组之前添加空检查,如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可能会假设在某个时间点,指针可能指向无效的内存,并且代码可能崩溃,但是如何更清晰地编写代码以避免出现问题?我无法更改指针的用法,因为它会影响大文件。