相关疑难解决方法(0)

在什么情况下我应该在C++中使用memcpy而不是标准运算符?

我什么时候可以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)

c++ memory performance allocation copying

32
推荐指数
5
解决办法
3万
查看次数

使用赋值而不是memcpy()在C中复制结构

直到最近,我才看到复制完成的结构字段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()一般使用?

c struct pointers memcpy

21
推荐指数
3
解决办法
3万
查看次数

标签 统计

allocation ×1

c ×1

c++ ×1

copying ×1

memcpy ×1

memory ×1

performance ×1

pointers ×1

struct ×1