最大堆栈大小使用

时间:2013-08-05 10:07:05

标签: linux gcc recursion profiler gprof

我有一个用C编写的函数,看起来像这样

void function1(){
    if(!some_condition){
        function1();
    }
}

这是在基于RedHat linux的机器上用gcc编译的。 是否有可以告诉我最大数量的分析工具 代码使用的堆栈空间?

1 个答案:

答案 0 :(得分:1)

来自Massif套件的

valgrind应该告诉您这一点。但是,你已经知道你的程序过于广泛地使用了堆栈,所以我不确定使用它会对你有多大帮助。

在我看来,你应该重构你的代码。不幸的是,C不是Scheme,编译器不是必需的,也不做任何尾递归优化。因此,重新组织函数以使其循环而不是递归调用自身可能是个好主意。以下是对Stacks and Recursion Elimination的好读。