gpt4 book ai didi

c++ - C/C++如何复制结构?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:32 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com