我什么时候可以memcpy使用它获得更好的性能?如何使用它?例如:
float a[3]; float b[3];
Run Code Online (Sandbox Code Playgroud)
是代码:
memcpy(a, b, 3*sizeof(float));
Run Code Online (Sandbox Code Playgroud)
比这快?
a[0] = b[0];
a[1] = b[1];
a[2] = b[2];
Run Code Online (Sandbox Code Playgroud) 直到最近,我才看到复制完成的结构字段memcpy().在类和在线指令中,将一个结构的内容复制到另一个结构中通常看起来像
struct block *b0 = malloc(sizeof(struct block));
struct block *b1 = malloc(sizeof(struct block));
/* populate fields in *b0 */
memcpy(b1, b0, sizeof *b1); /* copy contents of b0 into b1 */
/* free b0, b1 */
Run Code Online (Sandbox Code Playgroud)
但是,这个任务也可以通过简单的分配来替换memcpy().
*b1 = *b0; /* dereferenced struct assignment */
Run Code Online (Sandbox Code Playgroud)
有没有充分的理由说明为什么它没有被广泛使用(至少在我有限的经验中)?这两种方法是分配和memcpy()等价的,还是有一些令人信服的理由memcpy()一般使用?