有沒有辦法在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