问题标签 [memcmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
360 浏览

c++ - 将无符号字符读入字符串

我有一个无符号字符数组:

我想将该数组中的前 N ​​个无符号字符读入一个字符串,但是在查看之后strncpy(),这似乎只需要指向有符号字符的指针。

我应该看memcpy()吗?

0 投票
2 回答
3786 浏览

c# - 是否有用于比较 Mono 中的字节数组的 memcmp 等价物?

memcmp通过从 导入函数来比较 .Net 中的两个字节数组有一种众所周知的效率,如此msvcrt.dll所述。

单声道中是否有等效的库导入?在 Linux 或 Windows 上运行单声道时是否需要有所不同?还是有另一种在单声道中效果很好的快速字节数组比较技术?我正在寻找比仅在 c# 中迭代​​数组更好的东西。

更新

根据 Matt Patenaude 的评论,我认为这可能会很好:

但我还没有尝试过。我以前从未在单声道上做过 p/invoke。我正在使用pinvoke.net上推荐的签名。这会兼容吗?

寻找一个专注于单声道的答案。谢谢。

0 投票
3 回答
3199 浏览

c++ - 为什么这比 memcmp 慢

我正在尝试比较两行pixels。

Apixel被定义为struct包含 4 个float值 (RGBA) 的 a。

我不使用的原因memcmp是因为我需要返回第一个不同像素的位置,但这memcmp是不行的。

我的第一个实现使用SSE内在函数,并且比以下速度慢约 30% memcmp

然后我发现将值视为整数而不是浮点数会加快速度,现在只比memcmp.

从我读到的其他问题来看,MS 的实现memcmp也是使用SSE. 我的问题是 MS 实现还有哪些我没有的技巧?即使进行逐字节比较,它如何仍然更快?

对齐是个问题吗?如果pixel包含 4 个浮点数,是否已经在 16 字节边界上分配了像素数组?

我正在编译/o2所有优化标志。

0 投票
2 回答
5589 浏览

c - 为什么会出现分段错误?我正在使用 stat、mmap、nftw 和 memcmp 等

这是我的代码。我假设这与指针使用不当有关,或者我没有正确映射和取消映射我的内存。

谁能给我一些关于这个问题的见解?

编辑

我现在在使用 stat 函数之前声明我的 struct stat sb1 。之后,我再次收到分段错误。然后我注释掉我的 nftw() 调用并打印出 size 变量(它有一个合理的数字,所以我相信这是有效的)。新的错误是:

取消映射时出错。

0 投票
2 回答
5173 浏览

c++ - 我可以将空指针传递给 memcmp 吗?

特别是,以下是明确定义的,还是表现出未定义的行为?

这在 C 和 C++ 之间有区别吗?理想情况下,请提供标准的报价。

0 投票
1 回答
937 浏览

c - 数组与 memcmp 比较与逐个元素比较

哪个实现更好,为什么?

使用 for 循环或 memcmp() 实现逐个元素进行比较

或者

0 投票
3 回答
2596 浏览

c - mem比较数组以获取匹配字节数

memcmp()只告诉我们哪个内存块更大/更小,因为它只返回-1,0,+1。有没有办法知道发生不匹配的匹配元素的数量a[]b[]之后的数量。

这里memcmp(a, b, sizeof(int)* 3)将返回-1。我想得到 2 作为答案 有没有一种方法可以借助memcmp或一些类似的内置函数来获得匹配元素的数量

0 投票
5 回答
327 浏览

c - C结构的内部一致性

如果我有两个初始化为具有相同成员的 C 结构,我可以保证:

总是返回零?

0 投票
6 回答
7743 浏览

c - memcmp 但需要将块与固定值进行比较

我需要将一块内存与 C 中的一个固定值进行比较。我可以用 memcmp 做到这一点吗?就像是:

memcmp (starting_address , fixed_value , num_byte)

我需要 fixed_value 是一个固定值而不是一个块的起始地址。

  1. 将固定值写入整个临时内存块不是一种选择,因为我的空间有限。
  2. 使用循环逐个写入和检查内存不是一种选择,因为它非常慢。

如果不可能,谁能告诉我一个与 memcmp 一样快(或更快)的解决方案?

谢谢,

编辑:假设我有 5GB 的内存可以容纳 0。我正在努力确保它们都是 0。检查块的第一个字节是否安全,然后执行以下操作:

memcmp (starting_address , starting_address + ONE_BYTE , FIVE_GB); ?

编辑:这就是为什么我需要使用 memcmp 而不是用户定义的循环:

这段代码运行了 546 个时钟周期:

与这个花费了 7669 个时钟滴答声的对比:

0 投票
1 回答
524 浏览

c - 在更新前比较(memcmp before memcpy),还是只更新,哪个性能更好?

上下文(虽然不重要),在 netfilter 模块中,我们使用如下结构:

跟踪 MAC 地址和 ipv6 地址。

用于处理 IPv6 地址更改:

  1. 我应该比较新旧值(memcmp),如果不同,则更新(memcpy)。
  2. 或者,我只是更新它。

两者都是有效的行为,因此性能是这里的主要关注点。

我发现了一个类似的问题:https ://jira.mongodb.org/browse/SERVER-66

他们似乎选择了“刚刚更新”的方式。