假设我有一个粗糙结构如下所示的函数:
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(©);
return aRecursiveFunction(©, x);
}
Run Code Online (Sandbox Code Playgroud)
我需要知道的是,出于性能原因,copy在该点之前函数结束的90%的情况下,是否将在堆栈上创建(这是一个大型结构)的空间.或者它实际上甚至不重要?它取决于编译器吗?将此部分作为另一个功能分开是否更好?
谢谢.
编辑:澄清,sizeof(SomeLargeStructure)大约500,它只有基本类型和数组(没有特殊的构造函数或赋值运算符等).
编辑2:好的,结论似乎是堆栈空间可能每次都会被分配,但它不会影响性能.堆栈溢出不是问题,所以关闭.