结构分配或memcpy?

ofa*_*rax 38 c struct variable-assignment memcpy

如果我想在另一个(在C中)复制一个结构,那么pro&con's是什么:

struct1 = struct2;
Run Code Online (Sandbox Code Playgroud)

VS

memcpy(&struct1, &struct2, sizeof(mystruct_t));
Run Code Online (Sandbox Code Playgroud)

它们是等价的吗?性能或内存使用有区别吗?

Ale*_*ler 35

struct1=struct2;符号不仅更加简洁,而且也短,留下更多的优化机会的编译器.语义=是一个赋值,而memcpy只是复制内存.这在可读性方面也存在巨大差异,尽管memcpy在这种情况下也是如此.

使用=.

  • struct s 和 struct * s 之间 s = mystruct 的主要问题。两者都可以很好地使用equals,因此您无法通过阅读看出差异。*s 给你相同的,而 struct s 给你一个副本。当需要解除分配时,这适用于相同的 struct * s;但是如果你愚蠢地只对 struct s 版本执行一个 dealloc ,它就会泄漏 mystruct 。使用指针也更快。只要记住你在做什么,然后一切都会好起来的。天啊。 (3认同)