2 hzyuu hzyuu 于 2016.03.17 15:59 提问

memcmp参数比较之疑惑

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

3个回答

cxsmarkchan
cxsmarkchan   2016.03.17 16:28
已采纳

需要的。

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

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

oyljerry
oyljerry   Ds   Rxr 2016.03.17 16:52

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

yanggq1988
yanggq1988   2016.03.17 17:29

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!