问题标签 [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.
c - memmove 和 memcpy 有什么区别?
memmove
和 和有什么不一样memcpy
?您通常使用哪一种以及如何使用?
c - C 中的 memmove 实现
有人可以帮助我理解 memmove 是如何在 C 中实现的。我只有一个特殊条件吗?
它还取决于堆栈的增长方式吗?
c - 内存重叠是如何发生的,又是如何控制的?
在阅读有关 memmove 的信息时,我读到它可以处理MEMORY OVERLAPS,但我无法了解两个字符串之间如何发生内存重叠以及该函数如何仍能正确复制内存块。
c++ - 当 memcpy() 比 memmove() 快时,什么是真正重要的情况?
memcpy()
和之间的主要区别memmove()
在于,memmove()
当源和目标重叠时可以正常工作。当缓冲区肯定不重叠时,memcpy() 是可取的,因为它可能更快。
困扰我的是这潜在的问题。它是一个微优化还是有真正重要的例子,什么时候memcpy()
更快,以便我们真的需要使用而不是到处都memcpy()
坚持?memmove()
optimization - 用于 x86 和 +1 移位的快速 memmove(用于移动到前端变换)
对于快速 MTF(http://en.wikipedia.org/wiki/Move-to-front_transform),我需要更快的版本将 char 从数组内部移动到它的前面:
cachegrind 显示,对于 memmove,这里有很多分支错误预测。
对于其他版本的代码(不是第一个示例中的 memmove,而是这个)
有很多字节读取/写入、条件分支和分支错误预测
i 不是很大,因为它是用于“良好”输入的 MTF - BWT 之后的文本文件(Burrows–Wheeler 变换)
编译器是 GCC。
c++ - 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?
当我实际上没有东西可以移动/复制memmove()
/memcpy()
作为边缘情况时,我是否需要处理?
还是我应该直接调用函数而不检查
是否需要检查前一个片段?
c - memcpy/memmove 的奇怪行为
我的问题是 memcpy/memmove 更改了 a 的指针,struct FOO foo
它既不是函数的 src 也不是函数的目标。以下是 gdb 输出:
之前memmove(y,y_temp,size_y);
:
之后:
以下是变量的定义:
我知道,这不是 memcpy/move 的错误,所以我寻找提示,我这边的编程错误可能导致它。
谢谢
c - memmove 实现
参考线程:memmove implementation in C,我不明白为什么 2 个不同的变量会有内存重叠?即这是编译器将相同的“公共空间”分配给2个不同变量的正常情况,为什么编译器在这种情况下使用此策略?
c - memcpy 与 C 中的分配——应该是 memmove 吗?
正如对这个问题的回答所指出的那样,编译器(在这种情况下是 gcc-4.1.2,是的,它很旧,不,我不能改变它)可以在它认为合适的地方用 memcpy 替换结构分配。
我在 valgrind 下运行一些代码,并收到有关 memcpy 源/目标重叠的警告。当我查看代码时,我看到了这个(释义):
如果 gcc 决定用 替换该分配memcpy
,那么这是一个无效的调用,因为源和目标重叠。
显然,如果我将赋值语句frob
改为调用memmove
,那么问题就消失了。
但这是一个编译器错误,还是该赋值语句在某种程度上无效?