问题标签 [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 投票
1 回答
81 浏览

c - 我们将 -1 作为 strncmp() 中第三个参数的值传递,即。n 要比较的字节数?

我有三个问题,

  1. 我们将 -1 作为 strncmp() 中第三个参数的值传递,即。n 要比较的字节数?
  2. 为什么ARM和PPC的输出不同?IE。如果哪一个正确?
  3. 如果我使用 memcmp 而不是 strncmp,我会在 ARM 和 PPC 中获得“inside else”输出。如何以及为什么?

    /li>

以 ppc 输出

手臂输出

0 投票
1 回答
85 浏览

glibc - 将第三个参数作为 -1 传递给 memcmp 返回 0

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

0 投票
1 回答
271 浏览

performance - 在内存中搜索字符串时出现性能问题

我在 Win32 下开发 DLL,它做了一个简单的工作:它扫描主机的虚拟内存中的子字符串。但由于某种原因,与使用单线程扫描的 Cheat Engine、ArtMoney 甚至 OllyDbg 相比,它的运行速度非常慢。这是我使用 VirtualQuery() 获得的扫描单个内存部分的函数的代码。主机(.exe 应用程序)提交大约 300-400 MiB 的内存,我必须扫描大约 170 个不同大小的内存部分,从 4KiB 到 32MiB。我只扫描 MEM_PRIVATE、MEM_COMMIT 区域,不扫描 PAGE_GUARD、PAGE_NOACCESS、PAGE_READONLY,跳过 DLL 自己的内存。

出于某种原因,性能很糟糕 - 找到单个字符串需要 10-12 秒。例如 OllyDbg 在 ~2-3 秒内找到字符串。

我正在使用 MSVS 2010。

编译器命令行:

链接器命令行:

我究竟做错了什么?我的算法是坏的还是其他内存扫描仪使用了某种“魔法”?

0 投票
2 回答
1372 浏览

c - 在 C 中使用 memcmp 比较结构的一部分

我有 2 个相同类型的结构并想比较它们。结构的大小是 420 字节,我想在比较时跳过前 2 个字节,因为我知道它们永远不会匹配。我正在使用 memcmp 如下:

比较的结果给了我随机值。我假设当我通过“&f1.x”和“&f2.x”时,我跳过了前两个字节,比较剩余的 418 个字节。这个假设正确吗?

0 投票
1 回答
666 浏览

c# - C# 中 PInvoke 的 memcmp 不适用于大于 4x4 的数组

PINkove 部分取自一些 SO 答案(抱歉,我丢失了原始链接)。

下面是完整的程序。输出是false

如果我将数组的大小更改为 4x4,则输出变为true

为什么 memcmp 会这样?

0 投票
4 回答
2118 浏览

c - 为什么负数大于正数?

我使我的冒泡排序程序通用。我继续测试它,它运行良好,直到我在数组中放置了一个负数,我很惊讶它被推到最后,使它大于正数。

显然memcmp是这个原因,那么为什么memcmp()认为负数大于正数呢?

编辑
那么,如何修改程序以使其正确比较?

0 投票
3 回答
6615 浏览

c++ - memcmp 链接器错误 Visual Studio 2015

我有一个 Visual Studio 2012 C++ 项目。我最近卸载了它并安装了 Visual Studio 2015 并升级了项目。当我构建项目时,出现如下所示的错误:

函数中引用的错误 LNK2019 未解析的外部符号 _memcmp

此外,我的代码 memcmp 功能中没有使用过任何地方。

我使用了链接器详细函数,可以在输出文件中看到以下内容:

找到_memcmp

在 MyC++Project.obj 中引用

在 libcpmtd.lib(xstrcoll.obj) 中引用

加载 libvcruntimed.lib(__memcmp_.obj)

这里有两个问题

1.即使我没有在我的代码中使用 memcmp,为什么我会收到链接器错误?

2.为什么memcmp被加载为__memcmp_.obj

我的项目中也有以下设置:

1.C++-->代码生成-->运行库设置为/MTd

2.Linker-->Ignore All default library设置为nothing

我已经尝试了所有的项目设置,但一切都是徒劳的。

我只有这个我没有使用过的 memcmp 函数有问题。

我使用过 mamcpy 和 memset 并且没有这些问题

0 投票
2 回答
2315 浏览

c - 如何使用strchr在c中获取子字符串

我正在尝试获取字符串的一部分。
我有以下代码:

问题是获取第二个单词并将其存储在 word2 中。为此,我尝试使用strchr来定位空间。但是我第二次使用strchr我需要一个偏移量来找到第二个空间。我尝试了以下方法:

变量be应该包含空格字符在mystring. 最终word2应该包含。 另一种解决方案是使用循环“遍历”字符串,但这会欺骗函数。quick
strchr

0 投票
2 回答
549 浏览

c - memcmp 上的分段错误

问题出现在注释行上。如果“el”存在于“x”数组中,该函数返回 1。这是一个简单的,但我不明白为什么它是一个段错误。

此外,这是我尝试逐行调试时的调用堆栈显示。

0 投票
1 回答
413 浏览

assembly - 我在哪里可以找到 memcmp 的输入值(在用于逆向工程的 ARM 程序集中)?

首先,对不起,如果我的英语不好,那不是我的自然语言。

我还没有逆向工程的经验。所以,我对我在大学里关于这个话题的第一个任务感到很困惑。

任务是找到二进制文件的密码。该程序要求用户输入,对其进行转换并将该输入与硬编码值进行比较(我不知道它的长度)。我试图找到这个值。

我敢肯定,我找到了比较值的 memcmp 命令。我知道 memcmp 将这些值作为输入参数获取,但我不知道从哪里来。(堆栈或显式寄存器......)

这是进入 memcmp 之前的一段代码:

我非常感谢任何帮助。