【问题标题】:CPP checker: memsetValueOutOfRangeCPP 检查器:memsetValueOutOfRange
【发布时间】:2015-08-18 08:59:55
【问题描述】:

当我在 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”不适合“无符号字符”。第二个参数作为“int”传递,但该函数使用该值的“unsigned char”转换填充内存块。

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

【问题讨论】:

    标签: c++ memset cppcheck


    【解决方案1】:

    您的问题正是代码检查器告诉您的, 0xffffffff 不适合 uchar,memset 的第二个参数被评估为 uchar,所以传递它0xff

    【讨论】:

    • 感谢您的帮助。但是当通过0xff时,结果可能不是预期的?
    • 为什么不会出现?整个内存将被 0xff 填充
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多