相关疑难解决方法(0)

如果我在声明之前返回,是否在堆栈上分配变量?

假设我有一个粗糙结构如下所示的函数:

int aRecursiveFunction(const SomeLargeStructure *a, int x) {
    if (end recursion)
        return 0;
    // ...
    if (something that is mostly true)
        return aRecursiveFunction(a, x+1)+1;
    // ...
    SomeLargeStructure copy = *a;
    alter(&copy);
    return aRecursiveFunction(&copy, x);
}
Run Code Online (Sandbox Code Playgroud)

我需要知道的是,出于性能原因,copy在该点之前函数结束的90%的情况下,是否将在堆栈上创建(这是一个大型结构)的空间.或者它实际上甚至不重要?它取决于编译器吗?将此部分作为另一个功能分开是否更好?

谢谢.

编辑:澄清,sizeof(SomeLargeStructure)大约500,它只有基本类型和数组(没有特殊的构造函数或赋值运算符等).

编辑2:好的,结论似乎是堆栈空间可能每次都会被分配,但它不会影响性能.堆栈溢出不是问题,所以关闭.

c++

5
推荐指数
1
解决办法
190
查看次数

可以递归调用多少次 main 函数?

可以从主函数递归调用主函数多少次?计数是否取决于堆栈空间?

c

-1
推荐指数
1
解决办法
105
查看次数

标签 统计

c ×1

c++ ×1