当我们应该在c++中使用memcpy和memmove时

When we should use a memcpy and memmove in c++?

本文关键字:memcpy memmove 我们 c++      更新时间:2023-10-16

I反思memcpy。

我知道memcpy用于将变量复制到变量。

但最好使用:(例如)

int a = 5;
int b;
b = a;

相反,memcpy?

还是用std::move代替memmove

  1. MemcpyMemmove不是过时/缓慢的函数(也许这些函数来自C)
  2. 如果是,在C++11标准中替换这些函数的最佳方式是什么

按重要性递减的顺序,优势有:

  • memcpymemmove是类型不可知的,因此它们可以用来绕过严格的混叠限制。

  • memcpymemmove不需要对齐,尽管当数据对齐时它们可能运行得更快。

  • memcpy可能更快,因为它可以同时复制多个元素。然而,对于std::is_trivially_copyable型特征,std::copy也应该这样做。

当然,它们的缺点是只处理琐碎的可复制类型,而且只处理指针,而不是迭代器。但它们在C++代码中有明确的用途,例如从网络数据包或文件块中提取未对齐的数据,或使用位技巧实现浮点函数的近似值。

您只考虑一个案例。没有人将memcpymemmove用于int变量。

它们基本上是高度优化的功能,用于复制大块数据。它们是系统功能。它们直接处理记忆。