我希望能够根据递归函数的参数计算或至少近似计算递归函数的特定堆栈帧将使用多少内存(以字节或其他形式)。
例如,递归函数的堆栈帧可能需要多少内存,例如 Sample_recursive_function(int [] array, int n) 取什么?
最佳答案
您可以用参数的大小加上常量返回地址大小来近似。对于您的示例,它很小:int[] 是指针类型(对于 java、C++ 或 C#)并使用 4 或 8 个字节(取决于代码是在 32 位还是 64 位上运行),int 是 4 个字节并且返回地址也是 4 或 8 字节。因此,该函数的优化堆栈帧在 32 位上为 12 字节,在 64 位上为 32 字节(由于填充)。在 Debug模式下运行时,可能会使用一些额外的字节。此外,函数中的任何局部变量也会增加堆栈帧的大小。细节可能有点复杂。
关于java - 如何计算/近似递归函数的堆栈帧使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606967/