【发布时间】:2016-03-04 07:40:34
【问题描述】:
在 C 中的两个结构变量之间复制时,在后端是执行 memcpy 还是逐项复制?这可以取决于编译器吗?
【问题讨论】:
-
它依赖于实现。但对我来说
memcpy看起来比逐项复制更有效。尝试使用您的编译器。 -
事实上,我通常为这种情况做 memcpy。但现在我认为编译器可能足够聪明,可以在后面做一个 memcpy。因为它没有区别,并且比逐项复制更有效。
-
今天的编译器很聪明。我会让编译器选择。对于像
struct Point {int x; int y;}这样的小型结构,编译器甚至可能只发出一两条move指令,这比调用memcpy效率高得多。 -
他们一直很聪明,很长一段时间以来一直在使用“内置 memcpy”进行结构复制。