我希望能够根据递归函数的参数计算或至少估计递归函数的特定堆栈帧将使用多少内存(以字节或其他为单位)。
例如,递归函数的堆栈帧可能有多少内存 sample_recursive_function(int [] array,int n)take?
答案 0 :(得分:1)
您可以使用参数的大小加上常量返回地址大小来近似。对于您的示例,它很小:int []是指针类型(对于java,C ++或C#)并使用4或8个字节(取决于代码是运行在32位还是64位),int是4个字节并且返回地址也是4或8个字节。因此,该函数的优化堆栈帧将在32位上为12字节,在64位上为32字节(由于填充)。在调试模式下运行时,可能会使用一些额外的字节。此外,函数中的任何局部变量也将添加到堆栈帧的大小。细节可能有点复杂。