我们使用的静态分析工具将类似于以下的 C 代码标记为严重缓冲区溢出。
#define size 64
char buf [size + 1] = "";
memset (buf, 0, size + 1);
该工具的错误信息是: Buffer Overflow (Array Index Out of Bounds): The array 'buf' size is 1. Array 'buf' may use the 0..64 index。
这是合法的吗?将字符数组分配给空字符串是否真的导致其长度减少到单个字节,就好像它被定义为一样char buf [] = "";
?