当我们应该在c++中使用memcpy和memmove时
When we should use a memcpy and memmove in c++?
I反思memcpy。
我知道memcpy用于将变量复制到变量。
但最好使用:(例如)
int a = 5;
int b;
b = a;
相反,memcpy?
还是用std::move
代替memmove
?
Memcpy
和Memmove
不是过时/缓慢的函数(也许这些函数来自C)- 如果是,在C++11标准中替换这些函数的最佳方式是什么
按重要性递减的顺序,优势有:
-
memcpy
和memmove
是类型不可知的,因此它们可以用来绕过严格的混叠限制。 -
memcpy
和memmove
不需要对齐,尽管当数据对齐时它们可能运行得更快。 -
memcpy
可能更快,因为它可以同时复制多个元素。然而,对于std::is_trivially_copyable
型特征,std::copy
也应该这样做。
当然,它们的缺点是只处理琐碎的可复制类型,而且只处理指针,而不是迭代器。但它们在C++代码中有明确的用途,例如从网络数据包或文件块中提取未对齐的数据,或使用位技巧实现浮点函数的近似值。
您只考虑一个案例。没有人将memcpy
和memmove
用于int
变量。
它们基本上是高度优化的功能,用于复制大块数据。它们是系统功能。它们直接处理记忆。
相关文章:
- vector<vector<double>> to mxArray using memcpy
- 使用 memcpy() 复制到 std::chrono::milliseconds 会给出错误 -Werror=clas
- 从向量到空指针的 memcpy(反之亦然)不起作用
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- Memcpy C++替代方案
- 为什么 std::memmove 中联合的默认非平凡移动构造函数C++?
- Qt:memcpy失败了.如何复制?
- 在什么条件下使用 std::memcpy 在对象之间复制是安全的?
- std::memmove在同一对象之间是否始终安全
- 为什么 memcpy() 和其他类似的函数使用汇编?
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 使用 memcpy 将矢量数据复制到 wstring 的正确方法
- uninitialized_copy memcpy/memmove optimization
- 编译器减少 std::copy to memcpy (memmove) 的条件是什么?
- 在什么平台上memmove和memcpy可以有显著的性能差异
- 问:QT(C ++)上的memmove()和memcpy()
- Memcpy vs Memmove - 调试与发布
- 当我们应该在c++中使用memcpy和memmove时
- std::copy/memcpy/memmove optimizations
- Memcpy/Memmove到工会成员,这是否设置了"活跃"成员?