【发布时间】:2011-08-24 05:52:14
【问题描述】:
我想不通。我有以下代码:
#define SIZE 1000
#define MEMORY 0x10000000
unsigned char table[SIZE];
int i;
for(i=0;i<SIZE;i++) {
table[i] = *(unsigned char*)(MEMORY +i);
}
Klockwork 告诉我
缓冲区溢出,“表”的数组索引可能超出范围。大小为 1000(调整后大小为 250)的数组“表”可以使用索引值 250..999。
这里真的有问题吗?如果没有,这似乎是一个非常明显的误报。
【问题讨论】:
-
我在网上看到了一些关于这个警告的提及,它似乎与演员表有关(在表达式的右侧)你能用
*((unsigned char*)(MEMORY +i))试试吗?跨度> -
我会看看我是否可以稍后尝试,但感谢您的提示。
标签: c static-analysis klocwork