我希望能够根据递归函数的参数,计算或至少近似计算递归函数的特定堆栈帧将使用多少内存(以字节或其他形式表示)。
例如,像sample_recursive_function(int [] array,int n)这样的递归函数的栈帧可能占用多少内存?
发布于 2017-12-02 18:42:12
你可以用参数的大小加上一个常量的返回地址大小来近似它。对于您的示例,它很小: int[]是一种指针类型(对于java、C++或C#),使用4或8字节(取决于代码是在32位还是64位上运行),int是4字节,返回地址也是4或8字节。因此,此函数的优化堆栈帧将在32位上为12字节,在64位上为32字节(由于填充)。在调试模式下运行时,可能会使用一些额外的字节。此外,函数中的任何局部变量也会增加堆栈帧的大小。细节可能会更复杂一些。
https://stackoverflow.com/questions/47606967
复制相似问题