既知の構造体をメモリにコピーする場合、memcpyまたは逆参照を使用しますか?なぜ?具体的には、次のコードで:
#include <stdio.h>
#include <string.h>
typedef struct {
int foo;
int bar;
} compound;
void copy_using_memcpy(compound *pto, compound *pfrom)
{
memcpy(pto, pfrom, sizeof(compound));
}
void copy_using_deref(compound *pto, compound *pfrom)
{
*pto = *pfrom;
}
int main(int argc, const char *argv[])
{
compound a = { 1, 2 };
compound b = { 0 };
compound *pa = &a;
compound *pb = &b;
// method 1
copy_using_memcpy(pb, pa);
// method 2
copy_using_deref(pb, pa);
printf("%d %d\n", b.foo, b.bar);
return 0;
}
方法1と方法2のどちらがいいですか?gccによって生成されたアセンブリを調べたところ、方法2は方法1よりも少ない命令を使用しているようです。この場合、方法2の方が望ましいということですか?ありがとうございました。