2
char imei_temp[14] = {0, };

strcpy(imei_temp, "00000000000000");

根据我的理解,这是有效的代码。

但是 Klocwork 说缓冲区溢出,' imei_temp' 的数组索引可能超出范围。大小为 14 的数组 ' imei_temp' 可以使用索引值 0..14

4

2 回答 2

13

这是一个缓冲区溢出,因为您的缓冲区是 14 个字节,但您正在向它写入 15 个字节:14 个 ascii“0”,最后是一个空字节。

于 2012-06-21T00:44:15.153 回答
3

当您使用"s 指定一个字符串时,它会在字符串的末尾添加一个隐式\0,您正在尝试将 15 个字节复制到 14 个字节的缓冲区中。

'请注意,当您使用s指定字符时,不会发生这种情况。

于 2012-06-21T00:44:46.140 回答