【问题标题】:Passing 3rd parameter to memcmp as -1 return 0将第三个参数作为 -1 传递给 memcmp 返回 0
【发布时间】:2015-11-12 10:08:54
【问题描述】:

对于memecmp(),第三个参数是size_t(unsigned)。 但是当我们将第三个参数传递为-1时,即使第一个参数和第二个参数指向的内存块不同,也总是返回0?

【问题讨论】:

  • 这里没有问题
  • 对不起,我没有答案,因为问题不够清楚,无法回答。
  • 这甚至不是一个问题。你知道一个问题通常有一个问号吗? ... 看?就这样。
  • @JK 感谢您的指点,因为我是新来的,所以不知道这些。

标签: glibc memcmp


【解决方案1】:

你在比较什么?如果两个内存块中的内容相等,memcmp() 返回0

【讨论】:

  • 在 memcmp() 中,第三个参数告诉要在 1 和 2 之间进行比较的内存块的大小(size_t)。但是如果我们将第三个参数传递为 -1,即为负值。由于第三个参数是 -1 ,它将其值包装为最大值。在 32 位系统的情况下,该值将变为 0xffffffff。但在我的情况下, memcmp() 返回的值为零。所以你能解释一下这是怎么发生的吗也请让我知道是否有任何记录在案的参考资料可以证明这一点
  • @user3782944 正如我所说,如果ab 指向的内存块相等,则memcmp(a, b, num) 返回0
  • 但是在我的情况下 a 和 b 指向的内存块是不同的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2021-04-21
  • 2014-05-28
  • 2020-06-27
相关资源
最近更新 更多