当我在C ++中使用memset函数时,如下所示
char id[LIC_KEY_INFO_MAX_LEN + 1];
/* Create random numbers */
field[LIC_KEY_RANDOM] = createRand();
/* Create identifyer */
/* Padding in 0xff */
memset(&id, 0xffffffff, LIC_KEY_INFO_MAX_LEN);
然后我使用CPP检查我的代码,它会发出警告:
Id:memsetValueOutOfRange
摘要:第二个memset()参数' 4294967295'不适合未签名的字符' 消息:第二个memset()参数' 4294967295'不适合未签名的字符#39;第二个参数作为' int'传递,但该函数使用' unsigned char'来填充内存块。转换此值。
我的问题是什么。 非常感谢。
答案 0 :(得分:2)
您的问题完全代码检查器告诉您的内容,
0xffffffff
不适合uchar,memset的第二个参数被评估为uchar,因此传递给它0xff