207得票12回答
memcpy() vs memmove()

我正在努力理解memcpy()和memmove()之间的区别,并且我已经阅读了关于memcpy()不处理重叠源和目标的文本,而memmove()则会处理。 然而,当我在重叠的内存块上执行这两个函数时,它们都给出了相同的结果。例如,参考下面MSDN帮助页面上的memmove()示例:- 有没...

138得票9回答
memmove和memcpy有什么区别?

memmove 和 memcpy 有什么区别?你通常使用哪一个以及如何使用?

132得票2回答
我可以将 "number of bytes" 设置为零并调用 memcpy() 和 memmove() 吗?

当我实际上没有要移动/复制的内容时,我需要将memmove()/memcpy()视为边缘情况吗?int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } 还是...

40得票3回答
memcpy或memmove函数能否返回与目标指针不同的指针?

memmove函数的定义如下:void *memmove(void *dest, const void *src, size_t n); 在Linux手册页中,它说: 返回值 memmove()函数返回一个指向dest的指针。 为什么这个函数不只定义为void memmove(...

19得票1回答
为什么Linux中的memmove()实现方式是这样的?

从 Linux 的 memmove(3) 手册中: memmove() 函数将 n 个字节从内存区域 src 复制到内存区域 dest。这两个区域可以重叠:复制过程中,就好像先将 src 中的字节复制到一个不与 src 或 dest 重叠的临时数组中,然后再从临时数组中将字节复制到 d...

16得票7回答
memcpy() 比 memmove() 更快的真正重要情况是什么?

memcpy()和 memmove()之间的关键区别在于当源和目标重叠时, memmove()可以正常工作。当缓冲区不重叠时,memcpy()更可取,因为它可能更快。 令我困扰的是这个可能。这是微小优化还是有真正显着的例子表明 memcpy()更快,以至于我们真的需要使用 memcpy()...

15得票3回答
如何在C语言中使用memmove函数以及何时使用memmove函数?

关于使用 memmove(),我有两个疑问: 什么时候最好使用这个函数而不是使用另一个函数(即创建自己的函数)?我不确定我是否正确理解。 该函数的签名是void *memmove(void *dest, const void *src, size_t n)。如果我有一个简单的数组arr[N]...

12得票1回答
在 Rust 中,如何将向量中的元素左移?

有没有一种安全的方法在 Rust 中左移动向量元素?(`vec![1,2,3]` 左移两个位置后变成了 `vec![3]`)。我正在处理 `Copy` 类型,而且我不想付出比使用 `memmove` 更高的代价。 我找到的唯一解决方案是不安全的:通过 `ptr::copy` 直接使用 `me...

10得票3回答
在C语言中,memcpy和赋值之间的区别是什么?应该使用memmove吗?

正如在这个问题的答案中所指出的,编译器(在本例中为gcc-4.1.2,是的它很旧,我不能更改它)可以在认为合适的情况下用memcpy替换结构体赋值。 我正在valgrind下运行一些代码,并收到有关memcpy源/目标重叠的警告。 当我查看代码时,我看到了这个(引述):struct outer...

10得票4回答
在memmove函数中,"const void*"是什么意思?

memmove/memcpy/strcpy 函数的原型中的第二个参数是类似的:void *memmove(void *dest, const void *src, size_t n); //const void* char *strcpy(char *dest, const char *src...