2013-04-17 30 views
5

由於問題標題表明我想知道是否有辦法獲取當前進程的堆大小。如何在Windows平臺上獲取堆大小

+0

的類型,堆大小通常不是有用的信息。您是否可能問如何知道*可以創建的最大堆分配*? –

+0

不,我想知道的是使用堆大小 – Kira

+0

除了@DrewDormann所說的,你的問題非常模糊。你是否希望整個系統的堆大小(實際上沒有這樣的東西)或特定的進程(可以有多個堆 - 每個線程一個堆)?爲什麼這些信息是必需的? –

回答

6

你可以做到這一點 - 但我認爲這將是緩慢和痛苦的。

  1. 使用GetProcessHeaps來枚舉整個過程堆。
  2. 使用HeapWalk來枚舉每個堆中的塊。
  3. 使用HeapSize獲得尺寸和由於堆是如何工作的不同塊
+0

@NikBougalis - 局部變量是在堆棧上創建的,而不是在堆上創建的? – user93353

+1

D'oh!早上過早,沒有足夠的咖啡。愚蠢的評論刪除。 –

+0

不需要使用HeapSize,因爲PROCESS_HEAP_ENTRY已包含所有大小信息。 – Alex

相關問題