CPP检查器:memsetValueOutOfRange

时间:2015-08-18 08:59:56

标签: c++ memset cppcheck

当我在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'来填充内存块。转换此值。

我的问题是什么。 非常感谢。

1 个答案:

答案 0 :(得分:2)

您的问题完全代码检查器告诉您的内容, 0xffffffff不适合uchar,memset的第二个参数被评估为uchar,因此传递给它0xff