我有一个用C编写的函数,看起来像这样
void function1(){
if(!some_condition){
function1();
}
}
这是在基于RedHat linux的机器上用gcc编译的。 是否有可以告诉我最大数量的分析工具 代码使用的堆栈空间?
答案 0 :(得分:1)
valgrind应该告诉您这一点。但是,你已经知道你的程序过于广泛地使用了堆栈,所以我不确定使用它会对你有多大帮助。
在我看来,你应该重构你的代码。不幸的是,C不是Scheme,编译器不是必需的,也不做任何尾递归优化。因此,重新组织函数以使其循环而不是递归调用自身可能是个好主意。以下是对Stacks and Recursion Elimination的好读。