有没有办法在C编译时知道并输出函数所需的堆栈大小? 这里是我想知道:在编译时检查堆栈使用情况
让我们一些功能:
void foo(int a) {
char c[5];
char * s;
//do something
return;
}
当编译这个功能,我想知道需要多少堆栈空间消耗了when它被调用。这可能对检测隐藏大缓冲区的结构的堆栈声明有用。
我要寻找的东西,将打印这样的:
foo.c文件:函数foo堆栈用量是n
字节
有没有办法不看生成的汇编知道?或者可以为编译器设置一个限制?我试图避免给定进程的运行时堆栈溢出,我正在寻找一种方法来在运行时查找,如果由编译器确定的函数堆栈使用情况可用作编译过程。
让我们换一种方式:是否可以知道函数中所有对象的大小?我猜编译器优化不会是我的朋友,因为有些变量会消失,但优越的限制是好的。
如果你想知道,我输入了秘密的'}'字符 – 2008-09-24 08:33:08
这个问题似乎还不清楚。我猜如果你写更多的关于你为什么想知道这个以及为什么检查反汇编或可执行文件(这是检查编译器输出的最简单方法)是不可接受的,也许有人可以找到一些简单的解决方案? – Suma 2008-09-24 11:28:11