我无法找出这个 KlockWork 问题的解决方案。
KlockWork 显示 ABV.GENERAL (1:P1) Defer 以下代码
void fun1(uint32_t size)
{
if(size > 256)
{
return;
}
uint32_t *arr = (uint32_t *)malloc(size * sizeof(uint32_t));
if(arr == NULL)
{
return;
}
memset(arr, 0, size * sizeof(uint32_t));
fun2(arr, size);
free(arr);
}
void fun2(uint32_t *arr, uint32_t size)
{
uint32_t i = 0;
if(size > 256)
{
return;
}
while( i < size )
{
arr[i] = i;
printf("%d", arr[i]);
i++;
}
}
错误:大小为 'size*4' 的数组 'arr' 可能使用索引值 min(size+(-1), 255)..min(size+(-1), 255)
请提出一些避免此错误的方法。
谢谢