CPP检查器:memsetValueOutOfRange < >在C++中使用MSESET函数,如 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检查器:memsetValueOutOfRange < >在C++中使用MSESET函数,如 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);,c++,memset,cppcheck,C++,Memset,Cppcheck,然后我用CPP检查我的代码,它抛出警告: Id:memsetValueOutOfRange 摘要:第二个memset()参数“4294967295”不适合“未签名字符”。 消息:第二个memset()参数“4294967295”不适合“unsigned char”。第二个参数作为“int”传递,但函数使用此值的“unsigned char”转换填充内存块 我有什么问题。 非常感谢。您的问题正是代码检查器告诉您的, 0xffffff不适合于uchar,memset的第二个参数被计算为uchar,因

然后我用CPP检查我的代码,它抛出警告:

Id:memsetValueOutOfRange
摘要:第二个memset()参数“4294967295”不适合“未签名字符”。
消息:第二个memset()参数“4294967295”不适合“unsigned char”。第二个参数作为“int”传递,但函数使用此值的“unsigned char”转换填充内存块

我有什么问题。 非常感谢。

您的问题正是代码检查器告诉您的,
0xffffff
不适合于uchar,memset的第二个参数被计算为uchar,因此将其传递给
0xff

谢谢您的帮助。但是当通过0xff时,结果可能不是预期的?为什么不是预期的?整个内存将被0xff填充