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

c - 将字符串复制到无符号缓冲区:分段错误

我正在尝试将两个整数和一个字符串复制到缓冲区并打印出缓冲区元素。我得到第三个 printf 语句的段错误:

我不知道为什么这会出现段错误?

0 投票
2 回答
3432 浏览

c - memmove 是否真的“移动”了一大块内存并在源头留下零?

可能重复:
memcpy vs memmove

memmove是否真的“移动”了一块内存?如果是这样,它会留下零吗?或者,它就像memcpy吗?我正在查看手册页,但我不相信我的假设是正确的。如果我想使用 memmove 移动一块内存,我是否必须手动将我移动的那块内存清零?

0 投票
1 回答
2631 浏览

c - Valgrind 说关于两​​个缓冲区的“源和目标在 memcpy 中重叠”,但它们似乎没有重叠

OP 结尾的最后编辑

我用 Valgrind 测试了一个项目中使用的函数,它说“源和目标在 memcpy 中重叠”,并且还给了我“无效读取”和“无效写入”错误。我修复了代码以便不重叠这两个缓冲区但没有结果。这是代码:

使用以下内容调用此函数:

其中 seq_numbered 缓冲区和缓冲区被定义并初始化为:

另外,我尝试用 memmove 替换 memcpy 但没有结果:( 我的 Valgrind 输出是

万一,问我其他信息,谢谢

编辑在最后一次 memcpy 之前,dim_payload 使用 htonl() 转换为网络格式并从 512 传递到 131072.. 它需要使用 ntohl() 返回 512。

0 投票
1 回答
948 浏览

c# - Writeablebitmap - 向左滚动 1 px,最好的方法是什么?(又名 memmove 在哪里?)

我有一个可写位图。

我想将内容向左滚动 1 个像素,并在最右边的列中填充一个新的像素行。

在 C++ 中,我会将整个缓冲区向左移动 1 个像素,并覆盖每行的最后一个像素 - 但我不知道在 C# 中最好的方法是什么,因为没有 memmove。

0 投票
2 回答
1035 浏览

c - 用C中的另一个字符串替换子字符串

我正在编写一个代码来用它的值替换所有 MACROS。如果我的宏 MAX 的值是 1000,并且在代码中,它必须替换为 1000。(我假设如果 MACROS 是一行中的第一个单词,那么我们不会在该行中替换 MACROS,并且那案子我们会以不同的方式处理。

由于我是第一次使用memmoveand memcopy,我怀疑上面的代码是否稳定并且可以正常工作。

上面的代码正确吗?上面的代码对于所有输入情况都稳定吗?

0 投票
4 回答
7779 浏览

c - memmove中的“const void *”是什么意思?

memmove/memcpy/strcpy 原型中的第二个参数类似:例如:

但显然,如果 dest 和 src 重叠,那么 src 的内容将会改变,违反了 const void/char *?

0 投票
2 回答
5020 浏览

c - 处理内存时出错 - mremap_chunk: Assertion

这似乎是我以前的帖子,但这里的问题不同..

这是问题的 C 结构 -

这些值在运行时提供给结构内容,如下所示 -

现在有一个使用身份验证密钥值的函数。

该功能的相关部分是 -

现在,当我尝试运行以下程序时,得到了这个我不知道的错误。

我认为函数部分可能存在错误,但我不确定它到底是什么,因为当我评论标记的行(上面提到的)时,它akeylen是空的,所以取该fakekey值并且程序运行良好。

编辑1:

我在三个地方编辑了代码(也在上面的代码中编辑过)。

现在程序可以运行,但出现不一致的输出。

输入 :

输出:

现在情况更清楚了。

它意味着的问题肯定存在于reallocstatements 中。

请就此提出建议。

最初我在两个realloc语句中都添加了长度,但现在我将其更改为priv->keylen在第一和priv->keylen+priv->akeylen第二位置。

但仍有一些地方需要改进

为什么这是覆盖???

0 投票
3 回答
776 浏览

c - C - memmove() 函数 - 我在这个实现中移动了多少字节?

这似乎是一个很棒的地方。我的问题是,我在 memmove() 的这个实现中移动了什么值(或多少字节)?

在下一个示例中,它说我正在移动 11 个字节。但是是什么让它有 11 个字节呢?有人可以解释一下吗?

谢谢!

编辑:顺便说一句,字符串长度为 33,包括终止空字符。

0 投票
4 回答
2771 浏览

c - 如果destination 和source 相同,那么memmove 是做什么的?

如果目标和源相同,是否memmove仍然“移动”数据(或直接返回)?怎么样realloc; 如果新尺寸与旧尺寸相同怎么办?

0 投票
3 回答
21921 浏览

c - 在 C 中如何使用以及何时使用 memmove?

我对使用memmove()有两个疑问:

  • 什么时候最好使用这个函数而不是使用另一个函数(即创建自己的函数)?我不确定我是否理解正确。
  • 该函数的签名是void *memmove(void *dest, const void *src, size_t n)。如果我有一个简单的数组arr[N],我怎样才能将它放入被调用的函数中?arr[N] 还是 &arr[N]?不同之处在于数组是用初始大小声明的还是像指针一样声明?我有这个疑问,因为我看到了很多同时使用两者的例子。

我希望我能很好地解释我的疑问。

编辑:我必须从数组中删除一个元素,然后我想在左边移动已删除元素的以下元素。