问题描述
- memcmp参数比较之疑惑
-
memcmp内存比较,当第一个参数长度小于第三个参数指定的长度时,是否有必要在调用之前加长度判断?
解决方案
需要的。
int memcmp(const void *buf1, const void *buf2, unsigned int count);
memcmp的前两个参数是起点,第三个参数是长度。memcmp内部并不会检查你的内存长度,它会按照你给定的长度进行扫描。所以你必须保证count的长度不超过buf1和buf2的长度。或者保证buf1或buf2越界前,memcmp能够返回。
解决方案二:
长度不对,就会导致越界,也就是buffer overflow,这个是你调用的时候需要对参数做安全检查
解决方案三:
会导致结果不对,最后指针的内容不能保证。
时间: 2024-11-18 07:25:48