When copying a known struct in memory, would you prefer using memcpy or dereference? why?
Specifically, in the following code:
#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; }
Would you prefer method 1 or method 2? I looked at the assembly generated by gcc, and it seems that method 2 uses less instructions than method 1. Does it imply that method 2 is preferable in this case? Thank you.
memcpy()
. Simpler code. If there's any difference, it should be practically negligible with a good compiler. – Desiccator