问题标签 [memmove]

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 投票
2 回答
501 浏览

c - 使用 memmove 时出现总线错误

可能重复:
总线错误故障排除

要从字符串中删除重复项,这是我编写的程序:

但是运行程序时显示的错误是: Bus error: 10

必须对代码进行哪些更改?提前致谢

0 投票
3 回答
1811 浏览

c - 基数 4 到基数 2 转换器

该程序是将基数为 4 的数转换为基数为 2 的数,它应该在原地完成

输入 121(以 4 为基数)的输出应该是 011001,但它只显示 01。对于像 12101 这样的较大数字,它显示 0100,取第一个和最后一个数字。可能是什么问题呢?

0 投票
1 回答
16794 浏览

c - 为什么 Linux memmove() 是这样实现的?

来自memmove(3)的 Linux 手册页

memmove() 函数将 n 个字节从内存区域 src 复制到内存区域 dest。内存区域可能会重叠:复制就像首先将 src 中的字节复制到不与 src 或 dest 重叠的临时数组中一样,然后将字节从临时数组复制到 dest。

我们可以执行以下操作,而不是分配一个临时数组并复制两次值:

在这个实现中,我们只需要处理我们开始复制的位置。

我的实施有缺点吗?

注意:我实际上不会使用我的实现。我只是好奇。

0 投票
0 回答
172 浏览

c - memove导致总线错误

此代码中的 memmove 调用导致程序因总线错误而崩溃。基本上,代码接收一个 IP 数据包,然后创建一个新数据包。它计算了输入数据包中几个不可变字段的 MD5_HMAC(除 TTL、校验和之外的所有字段),并将这些值推送到输出数据包中。

我不确定如何解决这个问题。将不胜感激一些帮助。谢谢

以下是结构:

0 投票
2 回答
2438 浏览

c - memcpy 期间的分段错误

我正在尝试制作一个反转部分字符串的顺序的函数。我是使用指针的新手,出于某种原因,我可以访问字符串字符的位置以复制出子字符串,但我无法将它们放回同一位置...

当我尝试将反转的子字符串复制回其原始位置时,我得到

程序收到信号 SIGSEGV,分段错误。0x00007ffff7b5dc66 在?? () 来自 /lib/x86_64-linux-gnu/libc.so.6

任何帮助都是极好的!

这是我到目前为止所拥有的:

0 投票
4 回答
1115 浏览

c++ - A better array shifting algorithm?

I have an assignment that requires me to sort a heap based C style array of names as they're being read rather than reading them all and then sorting. This involves a lot of shifting the contents of the array by one to allow new names to be inserted. I'm using the code below but it's extremely slow. Is there anything else I could be doing to optimize it without changing the type of storage?

EDIT2: As suggested by Cartroo I'm attempting to use memmove with the dynamic data that uses malloc. Currently this shifts the data correctly but once again fails in the deallocation process. Am I missing something?

0 投票
3 回答
421 浏览

c++ - 这是否包含内存泄漏?

下面的代码是否包含内存泄漏。我怀疑确实如此,但我用来检测它们的工具(Visual Studio + Parasoft c++ 测试)没有标记任何东西。如果是我将如何解决它?

编辑:

我应该提一下,我已经尝试迭代每个单独的字符串,如下所示,但发生了异常。

0 投票
1 回答
471 浏览

c++ - 在 memmove 之后删除 [] 期间出现异常

我有下面的代码,其中包含一个动态的字符串数组。我在解除分配生成的每个单独字符串时遇到问题。我以为我可以只包含一个新的 for 循环来释放它们,但这不起作用。我应该怎么做?

0 投票
1 回答
417 浏览

c - 请查看 memcpy() 的这种莫名其妙的行为和输出以查找重叠的内存块

阅读以下内容后memcpy(),我继续阅读memmove()

To avoid overflows, the size of the arrays pointed by both the destination and source parameters, shall be at least num bytes, and should not overlap (for overlapping memory blocks, memmove is a safer approach).(关联)

在检查了用于说明其工作的程序后,memmove()我决定memcpy()改用它来调整它,以查看输出有何不同。令我惊讶的是,即使是内存块重叠的情况,它们也是相同的。这是程序和输出,然后我开始描述我的困惑:

输出 memmove can be very very useful.

此输出与 . 的输出相同memmove()。这是我的困惑:

1)为什么两者的输出相同?由于在 的情况下没有使用中间缓冲区memcpy(),我希望复制从将位置中的字符复制str+15str+20位置(覆盖那里的内容)开始,将位置中的字符复制str+16str+21位置,等等直到str+20 位置的字符,现在已更改为 str+15 位置的字符,要复制到 str+25 位置。但事实并非如此,没有覆盖,它就像一个中间缓冲区用于编写确切的原始字符串。这是一个插图:

那么为什么 memcpy() 将其复制为memmove 会非常有用,而不是memmove 可以非常非常非常 v呢?

2)现在产生一个次要的次要问题。以下是关于memmove()LINK

Copying takes place as if an intermediate buffer were used, allowing the destination and source to overlap.

这里到底是什么as if?中间缓冲区不是真的用于memmove()吗?

0 投票
4 回答
987 浏览

c++ - 为什么我不能 memmove std::string?

运行代码。如您所见,调用字符串的析构函数时程序崩溃。尝试评论该行delete并再次检查。

我怀疑 std::string 保留了自己的一些地址信息。当它在内存中的位置发生变化时,它不会被通知。

此外,由于memmove并不总是按预期工作,在 C++ 中复制类实例数组的适当表达是什么?