2010-04-29 23 views
9

我怎樣才能看到有多少堆棧空間目前在我的delphi應用程序中使用?我有一個非常奇怪的錯誤,聽起來像堆棧的麻煩。我想將它添加到我的應用程序的日誌中,以瞭解有多少堆棧空間正在使用/剩餘中。使用調試器可能不是很好,因爲可以多次調用例程。我怎麼能看到我的delphi應用程序當前使用了多少堆棧空間?

謝謝!

回答

11

這應該給你當前堆棧的使用情況:

function CurrentStackUsage: DWord; 
asm 
    mov eax, fs:[4] 
    sub eax, esp 
end; 

我不記得了我的頭頂,一個簡單的方法來獲得在運行時的最大堆棧大小,但你有默認值在您的鏈接器選項。

+0

謝謝你的回覆!我很驚訝這個價值有多小。這將表明堆棧最多隻有1%左右。這是以字節爲單位的數字? – 2010-04-30 16:02:13

+0

是的,這返回字節。 – 2010-04-30 16:28:33

2

來自SysInternals的VMmap可以爲您提供應用程序使用的每種內存類型(包括堆棧)的圖形視圖。它不會像Per Larsen的答案中的函數那樣給出確切的用法,但可以幫助您在應用程序的不同階段可視化內存使用情況。

+0

有趣的應用程序;我可以從中學到新的東西。謝謝! – 2010-04-30 16:02:51

相關問題