问题标签 [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 回答
1043 浏览

c - 使用 memcmp() 时出现段错误

我在这一行遇到段错误:

这是来自 gdb 的跟踪,您可以在此处查看 datap:

0 投票
1 回答
1226 浏览

c - 读取内存会发生分段错误吗?

我认为阅读记忆不应该引起任何问题,例如

memcmp() 失败吗?

0 投票
1 回答
1263 浏览

c - 如何编写可靠的、与内容无关的 memcmp() 实现?

一个天真的实现是memcmp()这样的(来自这个答案):

一旦找到第一个不匹配的字节,块遍历就会停止。这对加密应用程序不利,因为它使执行时间依赖于块内容,这可能允许定时攻击。所以 OpenSSL 使用这个(取自这里):

中间没有breaks 或returns,所以这段代码必须遍历整个块的长度。至少这是本意。

现在这是一个使用示例(来自此处):

现在,通过链接时代码生成 (Visual C++ LTCG) 或链接时优化 (gcc LTO),编译器能够同时看到CRYPTO_memcmp()实现和调用站点(即使它们位于不同的翻译单元中)。可以看到调用站点没有使用实际值,它只是将其与 null 进行比较。因此,它可以自由转换CRYPTO_memcmp(),以便在找到第一个不匹配的字节对并且“安全”版本memcmp()不再安全时立即返回。

如何memcmp()实现使得符合标准的编译器不会将其转换为有助于定时攻击的版本?

0 投票
3 回答
1449 浏览

c++ - c ++将字节数组与结构进行比较的最佳方法

我需要帮助。我有一个unsigned char *并且说我有一个结构

我想比较 cmp 和输入。最快的方法是什么?

提前非常感谢。

0 投票
2 回答
4425 浏览

c - memcmp 返回值的大小是什么意思?

我只是碰巧调试了一个令人难以置信的讨厌的错误:在我自己的 PC(Windows 7 x64,MinGw)上,我的 C 程序将使用memcmp比较数组成员时成功地对数组进行排序。

我的函数使用了冒泡排序算法,它的骨架如下所示:

现在,在我的电脑上,memcmp已返回-101在另一台电脑上又返回-50并且5. 通过将此与direction我进行比较,导致排序完全错误。

但是我想知道,返回值的绝对值(即大小)memcmp实际上是什么意思?

www.cplusplus.com

返回一个整数值,表示内存块的内容之间的关系:零值表示两个内存块的内容相等。大于零的值表示两个内存块中不匹配的第一个字节在 ptr1 中的值大于在 ptr2 中的值,就像评估为 unsigned char 值一样;小于零的值表示相反。

没有提到大小,他们只是通过说大于零来确保 +-1 不会出错。

0 投票
2 回答
720 浏览

c - 意外的 memcmp 返回值

我做了一个INI文件解析器,它在Windows上运行良好,但在Linux上运行良好,问题来自memcmp函数,它不应该返回0,我已经用printf和strlen检查过,(我也试过用strncmp相反,它返回了不同的值,但仍然不同于 0),但找不到问题出在哪里。

这是代码:


我怀疑这个错误很愚蠢,但我是 C 的菜鸟,很抱歉给您带来不便。

0 投票
3 回答
1492 浏览

c - memcmp 是否仅适用于字符串?

如果我发送memcmp两个指向整数的指针,那么它似乎将整数解释为字符。

例如:

在上面的代码中,它返回 1。

我想更好地理解这个函数,我想知道我是不是用错了,或者是否有类似的函数来比较内存块的int值。

0 投票
1 回答
3937 浏览

c++ - 基本数据类型的 Equal 运算符与 memcmp 的性能

我一直在使用 memcmp 函数在我的性能关键应用程序中比较 2 个整数。我不得不使用它而不是使用相等的运算符,因为我必须一般地处理其他数据类型。但是,我怀疑原始数据类型的 memcpy 性能并将其更改为等于运算符。但是,性能有所提高。

我只是做了一些简单的测试,如下所示。

使用 memcmp

该程序的输出如下。

使用相等运算符

该程序的输出如下。

有人可以让我知道对于原始数据类型,等号运算符是否比 memcmp 更快?如果是这样,那里发生了什么?等号运算符不是在里面使用 memcmp 吗?

0 投票
7 回答
3982 浏览

c - 如何有效地将一块内存与单个字节进行比较?

我正在尝试查看结构是否与结构0xFF的大小一样返回。

memcmp似乎是显而易见的起点,但我必须分配第二个内存块,用0xFF's. 这似乎只是一种浪费。

是否存在为此的标准功能?还是我应该通过 for 循环进行平底船和迭代?

0 投票
1 回答
232 浏览

c++ - C memcmp 第三个参数类型

memcmp 中的第三个参数应该是 sizeof() 类型。我用以下内容阅读了这段代码

结构在哪里st

上面调用中第三个参数的类型是什么?它在做什么?