gpt4 book ai didi

c++ - 通过值(value)函数优化返回

转载 作者:行者123 更新时间:2023-11-30 03:08:27 26 4
gpt4 key购买 nike

示例函数 1

int func1 (int arg)  
{
return arg + 10;
}

示例函数 2

int func1 (int arg)  
{
int retval = arg + 10;
return retval;

}

func_xyz (int x);  

int main ()
{
int a = 10;
int p = func1 (a);

func_xyz(p);
}

这些函数(示例 1 和示例 2)的运行时行为之间有什么区别吗?

我的代码中有一个使用示例 1 样式函数定义的函数定义。当我调用此函数一百万次(对于较小的迭代不可重现)并尝试将此值传递给 func_xyz 时,我得到一个 segfault。但是,当我使用示例 2 样式定义时,segfault 消失了。但我无法理解这种行为的原因。

最佳答案

THEORY 中,函数 2 将初始化一个局部变量(这将占用更多空间),然后进行计算并将值复制到变量所在的位置。
之后拷贝将被复制到返回值。所以这是一个额外的复制操作。

REALITY 中,编译器会在编译时进行优化,如果不需要的变量的值实际上没有被使用,则会删除不需要的变量。 (重构)

关于c++ - 通过值(value)函数优化返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961944/

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