memcmp参数比较之疑惑

memcmp内存比较,当第一个参数长度小于第三个参数指定的长度时,是否有必要在调用之前加长度判断?

需要的。

int memcmp(const void *buf1, const void *buf2, unsigned int count);

memcmp的前两个参数是起点,第三个参数是长度。memcmp内部并不会检查你的内存长度,它会按照你给定的长度进行扫描。所以你必须保证count的长度不超过buf1和buf2的长度。或者保证buf1或buf2越界前,memcmp能够返回。

长度不对,就会导致越界,也就是buffer overflow,这个是你调用的时候需要对参数做安全检查

会导致结果不对,最后指针的内容不能保证。