我反思memcpy。
我知道memcpy用于将变量复制到变量。
但最好不要使用:(例如)
int a = 5;
int b;
b = a;
而不是memcpy?
或使用std::move
代替memmove
?
Memcpy
和Memmove
不是过时/慢功能(也许这些功能来自C)?答案 0 :(得分:7)
为了降低重要性,优点是:
memcpy
和memmove
是类型不可知的,因此它们可用于绕过严格的别名限制。
memcpy
和memmove
不需要对齐,但在数据对齐时它们可能运行得更快。
memcpy
可能更快,因为它可以一次复制多个元素。但是,使用std::is_trivially_copyable
类型特征时,std::copy
也应该这样做。
当然,它们的缺点是只使用简单的可复制类型,并且只使用指针,而不是迭代器。但是它们在C ++代码中有明确的用途,例如,当从网络数据包或文件块中提取未对齐数据或实现approximations to floating-point functions using bit tricks时。
答案 1 :(得分:-1)
你只考虑一个案例。没有人对memcpy
变量使用memmove
和int
。
它们基本上是高度优化的功能,可以复制大块数据。它们是系统功能。他们直接处理记忆。