在 C/C++ 中按值传递结构时,必须复制结构内容。编译器如何实现这一点?即,通常会为此拷贝发出哪些汇编指令?
这些有多快,什么时候,例如与调用 memcpy 相比?
现在考虑这段代码:
struct X { int i, j, k; };
void foo(X x);
void foo( int i, int j, int k);
调用 foo(X) 和 foo(int,int,int) 有什么区别,或者生成的汇编代码可能相同(考虑参数的传递)?
最佳答案
在 C++ 中
How do compilers achieve that?
他们为该类/结构调用复制构造函数。如果您不提供一个或您提供一个,则隐式生成一个。
How fast are these, when, e.g. compared to a call to
memcpy
?
取决于类及其成员。分析应该给你一个更清晰的画面。
但是,应避免使用 memcpy
复制类实例。
在 C 中
How do compilers achieve that?
他们执行 shallow copy 该结构。出于所有实际目的,您可以将其视为与 memcpy
相同。
关于c++ - C/C++如何复制结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893639/